1

我想运行一个sql:

select b.* from A a inner join B b on a.c = b.c where b.status = 1 ; 

现在我必须使用Jpa CriteriaQuery来做这个,我有(Root<A> root),A和B没有PK&FK,columu c是A和B的FK,那怎么办?

    CriteriaQuery aQuery= cb.createQuery(A.class);
    Root<A> aRoot = aQuery.from(A.class);

那怎么办?

4

1 回答 1

0

首先,JPQL 不允许加入任意其他根对象,所以你不能在 JPQL 中这样做;只允许你加入关系。其次,Criteria 仅支持 JPQL 支持的内容,因此您也不能在 Criteria 中这样做。

最接近的是在它们之间有第二个根和交叉连接,或者使用供应商扩展(但 Criteria API 可能不允许这样的供应商扩展,因为它的 API 是固定的,所以你可能不得不使用基于字符串的 JPQL反而)。

于 2016-09-06T07:07:22.940 回答