以下のような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);
しかし、これはうまくいきません。同じことで私を助けてください。よろしくお願いします。