我使用spring數據...並且我有一個具有ManyToMany關係的實體。JPQL where子句與集合中的集合
所以我想要做這樣的要求:
@Query("SELECT d FROM Data d WHERE ((?2) IS NULL OR d.categories IN (?2))")
其中?2
對應列表,並categories
也從Data
(另一個實體)的列表。
但是這不起作用......任何想法? :)
PS:我看到了一個解決方案:
@Query("SELECT r FROM Data r WHERE (?3 = 0L OR ?3 = (SELECT COUNT(cate.id) FROM Data r2 JOIN r2.categories cate WHERE r.id = r2.id AND cate IN ?2))")
但它是由Hibernate生成一個蹩腳的請求,不正是我想要的......
@JMA我已經測試了上面的代碼,並且它正在使用JPA 2.1 – muasif80
Thx作爲您的答案...但是我現在需要添加一些複雜性!事實上,我通過JpaSort.unsafe動態地使用「order by」彈簧。使用不安全的方法,因爲我需要對計算值進行排序(例如:SIZE(d.saws),其中d.saws也是一個集合),因此明顯不起作用^^ – JMA