JPQL, como NO seleccionar algo
Tengo un SQL bastante simple que necesito realizar.
tengo unProcessUser
, Role
y unProcessUserRole
mesa. Un directo muchos-a-muchos
Quiero seleccionar todoProcessUser
Es que también tiene un rol de administrador.
Sin embargo, mi JPQL falla porque mi usuario también tiene un rol de oficial, por lo que se recupera en la lista.
Aquí está el JPQL:
entityManager.createQuery("SELECT p FROM " + ProcessUser.class.getName()
+ " p join p.roles role WHERE role.name NOT IN ('sysadmin')").getResultList();
El SQL generado es:
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' ) )