CriteriaBuilder join zwei Tabellen mit einem benutzerdefinierten Zustand
Ich schreiben will mit dieser SQL-Abfrage
SELECT *
FROM A
LEFT OUTER JOIN B
ON A.IDRESOURCE=B.IDRESOURCE AND B.IDLANGUAGE=22;
mit dem JPA Criteria Builder.
Ich schrieb den ersten Teil der Verknüpfung einfach mit:
CriteriaQuery<A> searchQuery = criteriaBuilder.createQuery(A.class);
Root<A> aRoot = searchQuery.from(A.class);
Join<A, B> bJoin= aRoot.join("mappedB", JoinType.LEFT);
aber ich weiß nicht, wie die Umsetzung der Bedingung B. IDLANGUAGE=22.
Gibt es eine Möglichkeit, dies zu erreichen in der Kriterien-generator?
- was ist mappedB
- Hi @charu joshi. Es ist der name des Attributs. Siehe die javadoc
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden JPA 2.1
ON
um es zu spezifizieren, die in derJOIN
Teil, der nicht die gleichen wie in derWHERE
... bJoin.on(criteriaBuilder.equal(bJoin.get("idResource"), aRoot.get("idResource")), criteriaBuilder.equal(bJoin.get("idLanguage"), 22));
Verwenden
where
undCriteriaBuilder.equal
.bJoin
in der where-Klausel.