我想检查一个集合(u.organisations
)中是否至少有一个元素包含在另一个集合(?
=excludedOrganisations)中:
select distinct u from SystemUser u
join u.userGroups g
join u.organisations o
where 3 in elements(g.permissions) and
EACH_ELEMENT_OF(o) not in (?)
如何用HQL表示EACH_ELEMENT_OF
?
我的最后一次尝试是:
select distinct u from SystemUser u
join u.userGroups g
where 3 in elements(g.permissions) and
not exists (
select org from Organisation org
where org in elements(u.organisations)
and org not in (?)
)
但我得到了一个例外:
IllegalArgumentException occurred calling getter of Organisation.id
发布于 2010-12-10 01:35:19
我猜你需要一个子查询来在SQL中表达它,因此在HQL中也需要子查询:
select u from SystemUser u
where not exists (
select 1 from UserGroup g where g.user = u and g not in (?)
)
发布于 2010-12-10 16:47:47
这是Hibernate文档中的经典示例:
from Cat as cat
left join cat.kittens as kitten
with kitten.bodyWeight > 10.0
在您的情况下,这将是:
select distinct u from SystemUser u
join u.userGroups g
join u.organisations o
where 3 in elements(g.permissions) and
o.id not in (?)
我假设Organisation实体有一个id字段,您可以传入id列表。
https://stackoverflow.com/questions/4401235
复制相似问题