簡體   English   中英

如何在JPA2標准查詢中使用多個聯接?

[英]How can I use multiple Joins in JPA2 Criteria Query?

這是一個真正問題的精簡版

我有三張桌子的STUDENT ADDRESS CLASS

STUDENT ManyToOne ADDRESS STUDENT ManyToMany CLASS STUDENT ManyToOne ADDRESS

我需要帶所有有相同地址的學生去同一堂課。

sql可能就是(只是即時編寫此代碼,而尚未對其進行測試)

Select * from STUDENT s join ADDRESS a on s.addressId = a.addressId join CLASS c on c.classId = s.classId

現在我是Criteria的新手,到目前為止,雖然可以合理地使用它,但我完全陷入了困境,因為我應該如何進行此連接,查看了Oracle,Jboss等文檔的每一個地方,但沒有說明應如何做以及所有這些。我在黑暗中拍攝的刺刺未成功。 即使在SO上,也有許多類似音調的問題,但是當您閱讀它們時,那​​是在問其他問題。

假設您的Student類定義了由JPA管理的集合,則您無需在JPQL查詢中定義任何聯接。 只需檢索Student對象,OpenJPA就會自動檢索地址和類。

您可以嘗試以下方法:

Root<STUDENT> from = criteriaQuery.from(STUDENT.class);
Join<STUDENT, ADDRESS> joinAddress = from.join(STUDENT_.address);
Join<STUDENT, CLASS> joinClass = from.join(STUDENT_.class);

在此之前,您應該從您的實體生成元類。

javac -classpath "PATHTOLIBRARIES\openjpa-all-2.2.2.jar" -Aopenjpa.metamodel=true STUDENT.java ADDRESS.java CLASS.java

PS:如果您不需要對'from.join'的結果做任何額外的事情,則可以忽略該保留的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM