我使用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