首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过HQL检查两个集合的交集

通过HQL检查两个集合的交集
EN

Stack Overflow用户
提问于 2010-06-21 16:44:12
回答 1查看 3.6K关注 0票数 8

我有一个类,它有一个集合,在我的nHibernate映射文件中为该类映射为一个包,我希望返回该类的所有实例,该类的集合包含我传入的一个或多个对象。

示例:

我的父类叫做DocumentDefinition。它有一个角色集合,这是一个nHibernate实体,可以通过它访问文档。这两者通过多对多映射联系在一起。我希望向查询传递一个角色集合,并返回传入了一个或多个角色的所有DocumentDefinition实例。

父类DocumentDefinition上的映射:

代码语言:javascript
复制
 <bag name="AllowedRoles" table="Many-To-Many Table" lazy="false">
      <key column="ParentDefinition" /> //Column from Many-To-Many Table
      <many-to-many class="MyRolesClass" column="ParentRole" /> //Column from Many-To-Many Table
 </bag>

到目前为止我已经尝试过的示例:

代码语言:javascript
复制
Select distinct d from DocumentDefinition d, MyRolesClass r where r in :roles and r in elements(d.Group)

Roles是我希望传入的集合。

那么,如何查询以返回DocumentDefinitions,其中r(角色类)同时位于传入的参数列表和DocumentDefinition对象的集合中。

希望大家都明白了!干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-22 05:19:09

你们很接近了..。查询应为:

代码语言:javascript
复制
select distinct d
from DocumentDefinition d, MyRolesClass r
where r in (:roles) and r in elements(d.AllowedRoles)

然后使用.SetParameterList("roles", collectionOfRoles)发送所需的角色。

顺便说一句,我更改了集合名称,它与您发布的映射不匹配。

还有一件事需要考虑:对于集合来说,lazy="false“几乎总是一个坏主意。

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

https://stackoverflow.com/questions/3083152

复制
相关文章

相似问题

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