1
模型中選擇我有休眠數據庫有三個型號:最簡單的方法使用JPQL
Article - which has is part of multiple categories (EDIT).
Category - which contains articles, and is part of an App
App - which has different categories
我想選擇其中有一個特定的應用程序的類別中的所有文章。 所以我想創造的東西,如:
find("ANY categories.app = ?", app).fetch();
事情是這樣的工作對我來說與CoreData,但明顯不是JPA,我似乎並沒有能夠找到如何做到這一點。
編輯: 澄清: 的文章:
@ManyToMany
public List<Category> categories;
在類別:
@ManyToOne
public App app;
@ManyToMany(mappedBy = "categories")
public List<Article> articles;
在應用
:
@OneToMany(mappedBy = "app")
public List<Category> categories;
當我嘗試這樣做時,我得到:java.lang.IllegalArgumentException:org.hibernate.QueryException:非法嘗試使用元素屬性引用[app]取消引用集合[article0_.id.categories] [SELECT a from models.Article一個WHERE a.lastUpdate>? AND a.categories.app =?]。 (類別而不是類別,因爲它是多對多的關係) –
因此,文章有很多類別,是嗎?你說一個類別包含幾篇文章。所以這是一個ManyToMany關聯。在這種情況下,你需要一個明確的連接:從文章中選擇一個內部連接a.categories c,其中c.app =?。這在我鏈接到的文檔中有很好的解釋。閱讀它,這就是你將學習的方式。 –
當你提到內部連接時,我感到不寒而慄,過去的一段時間裏的糟糕回憶......謝謝!我不記得了,不知道從哪裏開始。有時候我會用一種'老式'的方式來編寫SQL代碼,而這種代價很昂貴。所以謝謝你指出這是方式,它的工作原理!該文件非常有幫助! (並且抱歉沒有明確說明情況) –