簡體   English   中英

(JPQL)檢索不在@OneToMany屬性中的所有實體

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM