2013-03-07 11 views
5

ile ilişkilidir. Googling'i gerçekleştirdim, ancak javax.persistence.criteria uygulamasının yöntemi ile aramanın sonucunun ne olduğunu anlayamadım.Kriterler API'si,

http://www.objectdb.com/api/java/jpa/criteria/Subquery/correlate_CollectionJoin_

Bu Java Persistence API Mastering kitaptan Pro JPA2 değil.

bu sorgu için ölçüt API sorgusu tanımını oluşturarak

, biz Projesi çalışanları niteliğini korelasyon ve daha sonra ortalama maaş hesaplamak için doğrudan raporlar bunu katılmalısınız.

CriteriaQuery<Project> c = cb.createQuery(Project.class); 
Root<Project> project = c.from(Project.class); 
Join<Project,Employee> emp = project.join("employees"); 
Subquery<Number> sq = c.subquery(Number.class); 
Join<Project,Employee> sqEmp = sq.correlate(emp); 
Join<Employee,Employee> directs = sqEmp.join("directs"); 
c.select(project) 
.where(cb.equal(project.type(), DesignProject.class), 
     cb.isNotEmpty(emp.<Collection>get("directs")), 
     cb.ge(sq, cb.parameter(Number.class, "value"))); 

bu hat ne yapar: Bu örnek de türleri polimorfik karşılaştırma yapmak amacıyla Yolu arayüzünün tipi() yönteminin kullanımını gösterir?
sqEmp = sq.correlate (emp) öğesine katıl;

cevap

7

Size teşekkür ederim sen alt sorgu

+0

bunu ve tablolar kullanabilirsiniz yüzden ana sorgu tarafından başvurulan çalışana erişim sağlar. Yani sorguları birbirine yapıştırır? Yukarıda belirtilen hattın atlanmasının sonuçları ne olurdu? – pethel

+1

Çalışanlar üzerinde "emp" Katılma nesnesinde erişemezdiniz. Böylece, Employee_.directs' koleksiyonuna katıldığınız alt sorgunuzda 'emp' kullanamazsınız. – mika

İlgili konular