我有一个类,它有一个集合,在我的nHibernate映射文件中为该类映射为一个包,我希望返回该类的所有实例,该类的集合包含我传入的一个或多个对象。
示例:
我的父类叫做DocumentDefinition。它有一个角色集合,这是一个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>到目前为止我已经尝试过的示例:
Select distinct d from DocumentDefinition d, MyRolesClass r where r in :roles and r in elements(d.Group)Roles是我希望传入的集合。
那么,如何查询以返回DocumentDefinitions,其中r(角色类)同时位于传入的参数列表和DocumentDefinition对象的集合中。
希望大家都明白了!干杯!
发布于 2010-06-22 05:19:09
你们很接近了..。查询应为:
select distinct d
from DocumentDefinition d, MyRolesClass r
where r in (:roles) and r in elements(d.AllowedRoles)然后使用.SetParameterList("roles", collectionOfRoles)发送所需的角色。
顺便说一句,我更改了集合名称,它与您发布的映射不匹配。
还有一件事需要考虑:对于集合来说,lazy="false“几乎总是一个坏主意。
https://stackoverflow.com/questions/3083152
复制相似问题