JPQL中的多个LEFT JOIN FETCH

时间:2013-01-28 11:18:30

标签: spring jpql spring-data-jpa

我正在尝试从一个查询中获取3个表中的数据。我有“Workexperiences”,“Skills”和“Descriptions”。这个想法是,一个Workexperience有多个与它相关的技能和多个描述。我试图从一个专业的雇主那里查询所有的Workexperiences(Workexperience表有一个“EmployerId”专栏)。

我开始提取描述,这有效:

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

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

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)

这给了我经典的lazyinitializationexception。

所以我的问题是:你能在一个查询中使用多个'left join fetch'语句吗?如果是这样,你怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:3)

No你不能(根据规范)。

请注意,Hibernate支持它。