【发布时间】:2013-07-11 13:30:05
【问题描述】:
我有一个如下的 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);
但这不起作用。请帮助我。提前感谢您的帮助。
【问题讨论】:
-
您应该在配置中定义关系,而不是尝试在查询中重新创建它
-
@PanagiotisKanavos 感谢您的回复。我会尝试定义关系
标签: nhibernate fluent-nhibernate nhibernate-criteria