【问题标题】:JPQL Join over several connected EntitiesJPQL 加入多个连接的实体
【发布时间】:2013-12-21 07:39:12
【问题描述】:

我有以下实体结构(伪)

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 的关系。并选择与 where 子句中的 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

【问题讨论】:

    标签: java jpa join eclipselink jpql


    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2015-08-02
      • 2017-06-20
      • 2018-11-01
      • 2020-05-10
      • 2018-07-06
      • 2021-03-12
      • 1970-01-01
      • 2012-09-12
      相关资源
      最近更新 更多