public class Document extends Model {
...
@ManyToMany
public Set<User> accessors;
...
}
我想選擇所有訪問者包含某個用戶的文檔。 我只有極少的SQL經驗,沒有JPQL經驗。 那麼該怎麼做?JPA JPQL:當項目(列表/集合)的屬性包含其他項目時選擇項目
在此先感謝
public class Document extends Model {
...
@ManyToMany
public Set<User> accessors;
...
}
我想選擇所有訪問者包含某個用戶的文檔。 我只有極少的SQL經驗,沒有JPQL經驗。 那麼該怎麼做?JPA JPQL:當項目(列表/集合)的屬性包含其他項目時選擇項目
在此先感謝
select distinct d from Document d inner join d.accessors a where a.id = :id
你應該學會如何SQL連接工作,然後學習如何使用連接在JPQL。這是至關重要的。你會在網上找到大量的教程。 Google是你的朋友。
SELECT d FROM Document AS d WHERE :user MEMBER OF d.accessors
應該是你需要的,它比連接表更簡單。 只是不要忘記使用用戶作爲一個參數,而不是使用其ID:
query.setParameter("user", user);
這是正確的,JPQL方式,答案。 –
如果我們在元素(d.accessors)中使用'..:user而不是'...:user MEMBER OF(d.accessors)'',會有什麼區別呢? – Manuel
@曼努埃爾:[IN和會員的jpql運營商之間的區別是什麼](http://stackoverflow.com/questions/5915822/whats-the-difference-between-the-and-member-of-jpql-運營商) –
@ user1071828你應該點擊刻度來表示,這是正確的答案;-) – fommil
可以請你檢查這個問題? http://stackoverflow.com/questions/12051559/jpa-join-fetch-query-with-many-to-many – Panos
請不要忘記獨特。我無法弄清楚爲什麼我要結束重複的實體:') – Jelle