我有一个如下的sql查询:
SELECT *
FROM USER R
INNER JOIN userdepartment C
ON R.id = C.userid
INNER JOIN userdepartment K
ON C.userid = K.userid
WHERE C.departmentid = 155
AND K.departmentid = 157
用户和部门具有多对多关系,为了维护这种关系,我有 UserDepartment 表。现在我只想获取那些同时拥有 ID 为 155 和 177 的部门的用户。上面的查询符合我的要求。
现在我想将上述查询转换为 Nhibernate 查询。我正在使用 Criteria 生成查询。我尝试了以下方法:
var criteria = Session.CreateCriteria<User>();
var subcriteria = criteria
.CreateCriteria("UserDepartments","a", JoinType.InnerJoin);
subcriteria = subcriteria
.CreateCriteria("UserDepartments", "b", JoinType.InnerJoin);
var conjunction = Restrictions.Conjunction();
conjunction.Add(Restrictions.Eq("DepartmentId", 155));
conjunction.Add(Restrictions.Eq("DepartmentId", 177));
subCriteria.Add(conjunction);
但这不起作用。请帮助我。在此先感谢您的帮助。