有人可以幫忙嗎?
物體 A 有一個包含一組列舉的欄位。
方法采用一組列舉。
任務 - 如果 A.field 具有 1 個或多個與傳遞的列舉集相同的元素,則過濾掉值。我試圖通過 INTERSECT 實作它,但沒有實作結果。
作業解決方案 - 不是成員,但它只能用于 1 個引數......可以使用 for() 來實作,但我確信這不是一個好習慣......
uj5u.com熱心網友回復:
在 JPA 中沒有直接的方法可以將一個集合與另一個集合進行比較。
圍繞該問題的解決方案雖然涉及子查詢,但與 JPA 評估您的 MEMBER OF 子句的做法非常相似。子查詢可讓您查看集合中的各個值并將其與其他值進行比較,然后在主查詢中使用該結果。類似于以下內容:
"Select a from A a where a.id not in (select distinct aPrime.id from A aPrime join aPrime.field field where field in :parameterList)"
我不是 DBA,但如果有人抱怨這效率低下,還有許多其他表達方式,可能存在:
"Select a from A a where exists (select aPrime from A aPrime join aPrime.field field where field in :parameterList and aPrime.id = a.id)"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462571.html
上一篇:Java@Overrideequals():當this.getClass()!=o.getClass()失敗但不應該
