繁体   English   中英

Spring JPA与实体的两个列表字段相交

[英]Spring JPA intersect two list fields of an entity

我有一个名为A的实体,它具有一个属性userGroups

@entity
Public class A {

@OneToMany
@JoinTable(name = "a_user_groups", ...)
private Set<UserGroup> userGroups;
...
}

我需要找到其userGroups与给定的Set<UserGroup> userGroups参数没有交集的那些A实体。

这是我的方法:

@Query("SELECT a FROM A a WHERE :userGroups intersect a.userGroups is NULL")
List<A> getAWithNoIntersectionInGroups(@param("userGroups") Set<UserGroup> userGroups)

但是jpa中没有intersect关键字。

Not In关键字在这里不起作用:

假设有一个用户组ID为{1,3}A实体,我传递的用户组ID为{3,4} ,现在{1,3}不在{3,4} ,它是true,将选择实体,但不应选择它,因为存在相互的项目{3}

您可以使用NOT IN SQL子句代替。

@Query("SELECT a FROM A a WHERE a.userGroups not in (:userGroups)")
List<A> getAWithNoIntersectionInGroups(@param("userGroups") Set<UserGroup> userGroups)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM