我有如下SQL查詢NHibernate的查詢:怎樣才能利用標準以下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感謝您的回覆。我將嘗試定義關係 –