我正在開發使用App Engine數據存儲區的應用程序,並且由於多對多關係不受支持,我認爲使用數據庫的其他功能來幫助自己編寫應用程序。App引擎查詢,使用集合上的位置
事實上,我是存儲一個列表,其中包含每個對象內的相關對象的ID,我必須鏈接到另一個表。
注:我正在使用Java和JPA的一切。
這裏的I類使用
@Entity
public class Book {
@Id
private Long id;
@ElementCollection
private List<Long> specsId = new ArrayList<Long>();
// ... getters & setters & other properties
}
現在我想查詢數據庫過濾所有這些都在specsId一定值(或特定值的組合)的書籍。
現在我使用Spring來管理到數據庫的連接,所以我有使用entityManager查詢數據庫的DAO和服務。
到目前爲止,我試圖查詢的負載,開始反轉「在」運營商,這顯然沒有奏效
select from Book b where (1, 2) in b.specsId
或者試圖簡單地用
select from Book b where b.specsId = 1
,看它是否返回只是其規格中至少有「1」的書,但查詢返回數據存儲區中的每本書。
然後我發現這裏的另一個類似的問題,其建議使用
select from Book b where 1 member of b.specsId
但只是把錯誤(稱爲b的類書沒有元數據的成員是否確實在提供了正確的成員名稱的查詢?)
所以......有沒有辦法使用手寫查詢或使用javax.persistence.EntityManager提供的功能來做到這一點?
預先感謝您
編輯的建議我也試過
select b from Book b where b.specsId in (list)
但給我回的書籍表的所有元素
您是否在私人列表中使用了@EllementCollection註釋 specsId,我沒有看到。請讓我知道 –
Koitoer
對不起,是的,我忘了寫它!我會馬上更新這個問題! – Luca
許多人支持正常的JPA(無主)關係。 – DataNucleus