JPQL加入多个连接的实体

时间:2013-12-04 17:20:44

标签: java jpa join eclipselink jpql

我有以下实体结构(Pseudo)

class A 
@OneToMany      
List<B> bList;      

class B
@ManyToOne
A aFk;
@OneToMany
List<C> cList;

class C
@ManyToOne
B bFk;
@ManyToOne
D dFk;

class D
@OneToMany
List<C> cList;

所以我想检索所有D实体,但我只有客户端的实体A. 我想从A开始并迭代关系到B.并选择与clausel中的A属性匹配的那些 我如何使用JPQL执行此操作? CriteriaAPI的查询更容易吗? 我用jpql尝试了它,但是它让所有D实体都重新开始。

Select distinct d
from A a, D d
join a.bList ab
join ab.cList
join d.cList cd
where a.name='A'

我使用EclipseLink

1 个答案:

答案 0 :(得分:1)

您不在查询中使用C和D之间的关联。它应该只是

select distinct d from A a
join a.bList b
join b.cList c
join c.dFk d
where a.name = 'A'