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