私は実行する必要がある非常に単純な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ではなくROLE NAMEが表示されます。説明できますか? –
@Shervin - あなたはあなたのタグに注意する必要があります。あなたの質問に「SQL」とタグ付けされているため、以下の回答の大部分が間違っています。 – ChssPly76
いいえいいえadmin(sysadmin)を含めたくありません。 ProcessUserはユーザとシステム管理者です。したがって、私の選択は私に必要なものを私に与えません。私は、sysadminの役割を持っている場合は、ユーザーに任せて欲しい。 –