我很难创建一个 HQL 查询来检查表“X”的记录“a”列表是否包含在同一表“X”的另一个列表“b”中。
这是我正在使用的一个例子:
select r
from Role r
where (
select p
from Permission p
where p.name = 'test') in elements(r.permissions)
现在这个查询只是作为一个例子,为了澄清一点,每个角色都有 1 个或多个权限。
现在发生的情况是,如果子选择(权限 p)返回 1 行,则一切正常。但是如果选择了更多,查询就会失败,因为我正在尝试检查列表是否在列表中......
我确信我在这里遗漏了一些东西,所以请提供任何帮助,我们将不胜感激。
Thanks
也许存在更简单的东西,但我还没有找到它:
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))
为了更清楚地说明,此查询检查是否没有名称为“test”的权限不在角色权限中,这相当于说所有名称为“test”的权限都在角色权限中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)