2016-04-04 25 views
0

ile iki tabloyu birleştirmek. Birlikte katılmak sadece ilk bölümünü yazdı:CriteriaBuilder bu SQL sorgusu JPA Kriterleri Builder ile</p> <pre><code>SELECT * FROM A LEFT OUTER JOIN B ON A.IDRESOURCE=B.IDRESOURCE AND B.IDLANGUAGE=22; </code></pre> <p>yazmak istiyorum özel bir durumu

CriteriaQuery<A> searchQuery = criteriaBuilder.createQuery(A.class); 
Root<A> aRoot = searchQuery.from(A.class); 
Join<A, B> bJoin= aRoot.join("mappedB", JoinType.LEFT); 

ama durum B.IDLANGUAGE = 22 nasıl uygulanacağı bilmiyorum.

Kriterler Oluşturucu'da bunu başarmanın bir yolu var mı?

cevap

3

Kullanım JPA 2,1 ONWHERE

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)); 
0

where ve CriteriaBuilder.equal'u kullanın.

em.select(aRoot).where(criteriaBuilder.equal(bJoin.get("IdLanguage"), 22)); 
+0

Merhaba @Nicholas gibi değil aynıdır JOIN kesiminde, bunu belirtmek için. EM'ler, Katılmadan Sonra Nerede Çalışıyor? Benim problemim koşulu bir koşulu koşulu olarak çalıştırmak olmalı, – gvdm

+0

nolu bir konteynır olarak değil, bu kadar kullanmışım. Birleştirmeyi biliyor, çünkü where cümlede 'bJoin 'kullanıyorsunuz. –