CriteriaBuilder 使用自定义条件连接两个表
CriteriaBuilder join two tables with a custom condition
我想写这个SQL查询
SELECT *
FROM A
LEFT OUTER JOIN B
ON A.IDRESOURCE=B.IDRESOURCE AND B.IDLANGUAGE=22;
使用 JPA 条件生成器。 我简单地写了连接的第一部分:
CriteriaQuery<A> searchQuery = criteriaBuilder.createQuery(A.class);
Root<A> aRoot = searchQuery.from(A.class);
Join<A, B> bJoin= aRoot.join("mappedB", JoinType.LEFT);
但是我不知道如何实现条件 B.IDLANGUAGE=22.
有没有什么方法可以在 Criteria Builder 中完成此操作?
使用where
和CriteriaBuilder.equal
。
em.select(aRoot).where( criteriaBuilder.equal(bJoin.get("IdLanguage"), 22));
使用JPA 2.1 ON
在JOIN
部分指定,与WHERE
[=]不相同14=]
CriteriaQuery<A> searchQuery = criteriaBuilder.createQuery(A.class);
Root<A> aRoot = searchQuery.from(A.class);
Join<A, B> bJoin= aRoot.join("mappedB", JoinType.LEFT);
bJoin.on(criteriaBuilder.equal(bJoin.get("idLanguage"), 22));