[英](JPQL) Retrieve all entities which are not in @OneToMany property
我怎樣才能得到其不在接收器 usedVersed屬性的所有詩篇 ?
嘗試過類似的東西
@NamedQuery(name="unusedVersesByReceiver", query="SELECT v.id FROM Verse v WHERE v.id
NOT IN (SELECT r.usedVerses FROM Receiver r WHERE r = :_receiver)"
但是我得到:
The state field path 'r.usedVerses' cannot be resolved to a collection typ
這是我的課程:
class Verse{
private Long Id;
private String SomeText;
...
}
class Receiver{
private Long Id;
@OneToMany
private List<Verse> usedVerses;
...
}
更新:我將實體類更改為:
class Verse{
private Long Id;
private String SomeText;
@OneToMany
private User usedBy;
...
}
class Receiver{
private Long Id;
...
}
並嘗試了這個JPQL
@NamedQuery(name = "testUnusedVerses", query= "SELECT v.id FROM Verse v WHERE v.usedBy
!= :_receiver")
沒有錯誤,但也沒有正確的解決方案。 找不到用戶。
僅嘗試v
而不是v.id
並使用NOT MEMBER OF
而不是NOT IN
SELECT v.id FROM Verse v, Receiver r
WHERE v NOT MEMBER OF r.usedVerses
AND r = :_receiver
您不能選擇表示集合的屬性(對於usedVerses就是這種情況),您必須加入集合屬性並為其分配一個別名,該別名將引用該集合中的項目,然后可以選擇該別名。 在您的情況下,可能是:從Receiver r中選擇uv加入r.usedVerses uv其中r =:__ receiver
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.