Dam*_*ien 8 nhibernate hql intersection
我有一个有一个集合的类,在我的nHibernate映射文件中映射为该类的一个包,我希望返回该类的所有实例,其集合中有一个或多个我传入的对象.
例:
我的父类称为DocumentDefinition.它有一个Roles集合,它是一个nHibernate实体,可以访问该文档.这两个通过多对多映射连接.我想将查询传递给角色集合,并返回所有传递了其中一个或多个角色的DocumentDefinition实例.
父类的映射,DocumentDefinition:
<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>
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的例子:
Select distinct d from DocumentDefinition d, MyRolesClass r where r in :roles and r in elements(d.Group)
Run Code Online (Sandbox Code Playgroud)
角色是我希望传递的集合.
那么如何进行查询以返回DocumentDefinitions,其中r(Roles Class)在传入的参数列表和DocumentDefinition对象的集合中.
希望很清楚!干杯!
你非常接近......查询应该是:
select distinct d
from DocumentDefinition d, MyRolesClass r
where r in (:roles) and r in elements(d.AllowedRoles)
Run Code Online (Sandbox Code Playgroud)
然后使用发送所需的角色.SetParameterList("roles", collectionOfRoles).
顺便说一下,我更改了与您发布的地图不匹配的集合名称.
还有一件事需要考虑:lazy ="false"对于集合几乎总是一个坏主意.
| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |