Spring JPA пересекается с двумя полями списка сущности - PullRequest
0 голосов
/ 16 мая 2018

У меня есть объект с именем A, у которого есть одно свойство userGroups:

@entity
Public class A {

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

Мне нужно найти те A сущности, у которых их userGroups не имеет пересечения с данным параметром Set<UserGroup> userGroups.

Это мой метод:

@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 ключевое слово здесь не работает:

Предположим, существует сущность A с идентификаторами групп пользователей {1,3}, и мои переданные идентификаторы групп пользователей: {3,4}, Теперь {1,3} не находится в {3,4}, и это правда, и сущность будет выбрана, но она не должен быть выбран, потому что есть взаимный пункт {3}

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете использовать NOT IN Предложение SQL вместо пересечения.

@Query("SELECT a FROM A a WHERE a.userGroups not in (:userGroups)")
List<A> getAWithNoIntersectionInGroups(@param("userGroups") Set<UserGroup> userGroups)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...