Jpa CriteriaQuery,如何添加多个join子句?

时间:2016-09-06 02:46:08

标签: jpa join criteriaquery

我想运行一个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&amp; FK,columu c是A和B的FK,那该怎么办?

    CriteriaQuery aQuery= cb.createQuery(A.class);
    Root<A> aRoot = aQuery.from(A.class);
那么怎么办?

1 个答案:

答案 0 :(得分:0)

首先,JPQL does not allow joining to arbitrary other root objects,所以你不能在JPQL中这样做;只允许你加入关系。 其次Criteria只支持JPQL支持的内容,因此您也无法在Criteria中执行此操作。

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