【问题标题】:Multiple LEFT JOIN FETCH in JPQLJPQL 中的多个 LEFT JOIN FETCH
【发布时间】:2013-01-11 17:20:19
【问题描述】:

我试图在一个查询中从 3 个表中获取数据。我有“工作经验”、“技能”和“描述”。这个想法是,一个工作经验有多个与之相关的技能和多个描述。我正在尝试从一个特定的雇主那里查询所有工作经验(工作经验表有一个“EmployerId”列)。

我从获取描述开始,这很有效:

select distinct w from Workexperience w 
  left join fetch w.skills
    where w.employer=(select e from Employer e where e.username = :username)

这给了我所有的工作经验和他们的技能,到目前为止一切都很好。 当我尝试添加描述时,它变坏了:

select distinct w from Workexperience as w
  left join fetch w.skills
  left join fetch w.descriptions
    where w.employer=(select e from Employer e where e.username = :username)

这给了我经典的延迟初始化异常。

所以我的问题是:您可以在一个查询中使用多个“左连接提取”语句吗?如果是这样,你如何做到这一点?

提前致谢!

【问题讨论】:

    标签: spring jpql spring-data-jpa


    【解决方案1】:

    No 你不能(根据规范)。

    请注意,Hibernate 支持它。

    【讨论】:

    • 这里提到的答案是关于多个连接的连接,例如实体 A 具有引用实体 B 的属性,而实体 B 又具有引用实体 C 的属性。A -> B -> C。这里的问题是关于来自同一个起始实体的多个连接,因此 A -> B 和 A - > C,这是非常不同的东西。该答案中引用的文档并不否定 OP 的意图。
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 2011-10-13
    • 2012-02-04
    • 2015-05-19
    • 1970-01-01
    • 2016-10-07
    • 2015-07-17
    • 2015-09-22
    相关资源
    最近更新 更多