鑑於通過Hibernate JPA訪問數據庫的這兩個實體,是否需要制定一個JPA查詢幫助,請
@Entity class A {
int id;
String aName;
}
@Entity class B {
int id;
String bName;
@ManyToMany Set<A> aRefs;
}
的結果,我想是有不是aName
一切都一個實體的集合由B個實體引用的。或換句話說,所有A
不屬於任何B
的aRefs
。
我使用NOT EXISTS
和NOT MEMBER OF
與子查詢嘗試了一些替代品,甚至與LEFT OUTER JOIN
小號涉足,但煩人的是我想出或者通過Hibernate的解釋遭到拒絕,甚至最終會轉化爲多數民衆贊成否決無效SQL查詢由Oracle提供。
嗯。我會設置一個小測試工具來嘗試這些建議。我在這裏有一個高效的數據庫的工作環境,所以我非常躊躇不決地混淆了數據結構。但是如果沒有其他的工作,我會嘗試。謝謝! – 2011-04-02 07:22:40
我不認爲你需要改變你的底層數據結構。如果將實體A的引用添加到B(manyToOne ref),則可以將加載設置爲「懶惰」,以確保不會從數據庫獲取太多數據。您還可以在@ManyToOne註釋中設置額外的屬性,以指定哪些列定義實體A和B之間的關係。[javadoc](http://download.oracle.com/javaee/6/api/javax/persistence/ManyToOne .html)顯示了這種雙向關係的一個很好的例子 – ChristiaanP 2011-04-02 10:44:48
你甚至不得不改變數據結構嗎?當前的@OneToMany必須存儲在某個位置,無論是在A.B_ID列還是在B_A_REFS中間表中。你不能在A中使用現有的數據庫結構設計一個@ManyToOne字段嗎? – wallenborn 2011-04-02 14:55:32