Найдите пользователя с ролью (список ролей), у которого есть именно эти роли из списка, и никаких других - PullRequest
0 голосов
/ 18 февраля 2020

Описание проблемы;

У меня есть модель пользователя с набором ролей (отношение многие ко многим). Я хотел бы выбрать из базы данных (MySQL) пользователя, у которого есть именно эти роли, которые я спрашиваю (не больше, не меньше).

Это мой запрос (не работает должным образом), если я ищу пользователей с ролями Администратор и Пользователь:

select * from login.user u join user_role ur on u.id = ur.user_id join role r on ur.role_id = r.id where r.name in ('ROLE_ADMIN', 'ROLE_USER')

Эквивалент из Hibernate (NativeQuerty);

select * from user u join user_role ur on u.id = ur.user_id join role r on ur.role_id = r.id where r.name in (:roles)

В этом запросе возвращаются пользователи с ролями Администратор или Пользователь. В этом случае я являюсь пользователем Admin и .

Если спросить пользователя с ролью администратора, я бы хотел, чтобы пользователи имели только роли администратора.

1 Ответ

0 голосов
/ 19 февраля 2020

Ну, вы в основном говорите: «Дайте мне любого пользователя, у которого в вашем запросе есть либо« ROLE_ADMIN », либо« ROLE_USER », либо оба». Если вы укажете только интересующую вас роль, вы получите необходимые результаты.

Возвращает только администраторов, например:

select * from login.user u join user_role ur on u.id = ur.user_id join role r on ur.role_id = r.id where r.name in ('ROLE_ADMIN')
...