使用Spring 4.1.4、Spring Data 1.7.1、Hibernate 4.3.8
出于性能原因,我试图让左联接获取在JPQL中工作,但在SubItem1有0个条目的情况下,我不会返回实体。
我的JPQL看起来是这样的:
@Query("select distinct foo from Foo foo
join fetch foo.parentItem pi
left join fetch pi.ZeroOrMoreChildren zChild
join fetch zChild.parentOfZChild pofz
join fetch pofz.grantParentOfZChild where foo.someFeild = ?1")
我遇到的问题是,如果有0个zChild条目,那么我就得不到一个foo对象。我的物体都被正确地水合了,但显然我缺少了应该存在的实体。
想清楚了,问题是需要一直向下的左联接。
所以查询应该是这样的。
@Query("select distinct foo from Foo foo
join fetch foo.parentItem pi
left join fetch pi.ZeroOrMoreChildren zChild
left join fetch zChild.parentOfZChild pofz
left join fetch pofz.grantParentOfZChild where foo.someFeild = ?1")