Eli*_*lio 4 java hibernate hql
我很难创建一个HQL查询,该查询检查表'X'的记录'a'的列表是否包含在同一表'X'的另一个列表'b'中。
这是我正在使用的示例:
select r
from Role r
where (
select p
from Permission p
where p.name = 'test') in elements(r.permissions)
Run Code Online (Sandbox Code Playgroud)
现在,此查询仅作为示例,为了澄清一点,每个角色都具有1个或多个权限。
现在发生了什么,如果子选择(权限p)返回1行,则一切正常。但是如果选择更多,查询将失败,因为我正在尝试检查列表是否在列表中...
我确定我在这里缺少任何东西,因此请提供任何帮助。
谢谢
也许存在一些更简单的方法,但是我没有找到它:
select r from Role r where not exists (
select p.id from Permission p
where p.name = 'test'
and p.id not in (select p2.id from Role r2 inner join r2.permissions p2
where r2 = r))
Run Code Online (Sandbox Code Playgroud)
更清楚地说,此查询检查是否没有角色权限中没有名称“ test”的权限,这与说所有名称为“ test”的权限都在角色权限中相同。
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |