【问题标题】:Jpa CriteriaQuery , how to add many join clause?Jpa CriteriaQuery ,如何添加多个连接子句?
【发布时间】:2016-09-06 02:46:07
【问题描述】:

我要运行一条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);

那怎么办?

【问题讨论】:

    标签: jpa join criteriaquery


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多