首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HQL:一个集合的元素在另一个集合中吗?

HQL:一个集合的元素在另一个集合中吗?
EN

Stack Overflow用户
提问于 2010-12-10 01:27:28
回答 2查看 11.7K关注 0票数 11

我想检查一个集合(u.organisations)中是否至少有一个元素包含在另一个集合(? =excludedOrganisations)中:

代码语言:javascript
复制
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

我的最后一次尝试是:

代码语言:javascript
复制
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 (?)
)

但我得到了一个例外:

代码语言:javascript
复制
IllegalArgumentException occurred calling getter of Organisation.id
EN

回答 2

Stack Overflow用户

发布于 2010-12-10 01:35:19

我猜你需要一个子查询来在SQL中表达它,因此在HQL中也需要子查询:

代码语言:javascript
复制
select u from SystemUser u 
where not exists (
    select 1 from UserGroup g where g.user = u and g not in (?)
)
票数 0
EN

Stack Overflow用户

发布于 2010-12-10 16:47:47

这是Hibernate文档中的经典示例:

代码语言:javascript
复制
from Cat as cat
left join cat.kittens as kitten
    with kitten.bodyWeight > 10.0

在您的情况下,这将是:

代码语言:javascript
复制
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列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4401235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档