我有以下实体结构(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
答案 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'