나는 수행 할 필요가있는 매우 간단한 SQL을 가지고있다.JPQL, 무언가를 선택하는 방법
나는 ProcessUser
, Role
및 ProcessUserRole
테이블을 가지고 있습니다. 똑 바른 앞으로 다 대다
나는 모두 ProcessUser
를 선택하고 싶습니다 또한 역할이있는 admin를 선택하고 싶습니다.
그러나 내 사용자도 역할 관리자를 가지고 있기 때문에 내 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' ) )
당신은 당신이 ADMIN의 역할을 포함하고 싶은 말은 , 샘플에는 SysAdmin에없는 역할 이름이 표시됩니다. 설명 할 수 있니? –
@ 세븐 - 태그에주의해야합니다. "SQL"(이제 JPQL로 변경됨)으로 질문 태그를 지정했기 때문에 아래 답변의 대부분이 올바르지 않습니다. – ChssPly76
아니요 admin (sysadmin)을 포함하고 싶지 않습니다. ProcessUser는 사용자 및 시스템 관리자이므로 내 선택은 내가 원하는 것을 얻지 못합니다. 내가 sysadmin 역할을하는 경우 사용자가 생략해야합니다. –