JPQL, как НЕ выбрать что-то
У меня есть довольно простой SQL, который мне нужно выполнить.
у меня естьProcessUser
, Role
иProcessUserRole
Таблица. Прямо вперед многие ко многим
Я хочу выбрать всеProcessUser
Это также имеет роль администратора.
Однако мой JPQL терпит неудачу, потому что у моего пользователя также есть офицер роли, поэтому он извлекается из списка.
Вот JPQL:
entityManager.createQuery("SELECT p FROM " + ProcessUser.class.getName()
+ " p join p.roles role WHERE role.name NOT IN ('sysadmin')").getResultList();
Сгенерированный SQL:
select distinct processuse0_.id as id8_, processuse0_.position as position8_, processuse0_.username as username8_, processuse0_.organization_id as organiza9_8_, processuse0_.passwordHash as password4_8_, processuse0_.fromEmail as fromEmail8_, processuse0_.firstname as firstname8_, processuse0_.lastname as lastname8_, processuse0_.processes as processes8_ from ProcessUser processuse0_ inner join ProcessUserRoles roles1_ on processuse0_.id=roles1_.userId inner join Role role2_ on roles1_.roleId=role2_.id where ( role2_.name not in ( 'sysadmin' ) )