spring - JPQL 中的多个 LEFT JOIN FETCH

标签 spring jpql spring-data-jpa

我正在尝试在一个查询中从 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)

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

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

提前致谢!

最佳答案

No你不能(根据规范)。

请注意,Hibernate 支持它。

关于spring - JPQL 中的多个 LEFT JOIN FETCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560865/

相关文章:

java - 将 spring JDBC 事务与 hibernate 事务隔离

java - Spring Controller 中的 Autowiring bean注入(inject)

java - 删除集成测试时创建 bean 的异常,该异常不会出现在标准应用程序启动中

java - 如何使用 MockMvc 测试具有流内容的 Controller ?

java - JPQL SELECT 日期语句之间

jpa - JPQL 我们不能 CONCAT(String, Integer) EclipseLink?

java - JPQL 多对多选择

spring - Spring JPA 中连接到两个不同数据库失败

java - spring-data-jpa 1.6 需要 spring 框架 3 库,是真的吗,还是我错过了什么?

elasticsearch - SpringData(4.x)Elastic无法正确序列化实体