我有NHibernate的以下情形(对不起,我搞砸了XML,但文本编辑器中“帮助我”一点也不为过,而我试图将它在复制;-))NHibernate的袋子查询问题
<class name="TestApp.Components.User,TestApp.Components" table="Users">
<id name="Id" column="UserId" type="Int32" unsaved-value="0">
<generator class="native"></generator>
</id>
<property name="UserName" type="string" length="100" not-null="false"/>
<bag name="Groups" table="User_Group" lazy="true" >
<key column="UserId"></key>
<many-to-many class="Group" column="GroupId" />
</bag>
<class>
我需要能够编写一个查询返回所有属于组的集合中的用户。
基本上我想下面的SQL执行:
select distinct username from users u, user_group ug
WHERE u.userid = ug.userid
AND (ug.groupid = 1 OR ug.groupid = 2 OR ug.groupid = 3)
我知道我可以在HQL做到这一点,但我想用的ICriteria接口来做到这一点。
var session = sessionManager.GetSession();
var items = session.CreateCriteria(typeof(User));
ICriterion criterion = null;
foreach (var groupid in Groups)
{
ICriterion tempCriterion = Restrictions.Eq("Groups.GroupId", groupid);
criterion = criterion == null ? tempCriterion : Restrictions.Or(criterion, tempCriterion);
}
items.Add(criterion);
我已经试过以上,但它的错误,我似乎无法找出我错过了什么。在查询中。
有人能指出我在正确的方向关于如何构建此查询。
感谢, 最大林女士