全体の状況がはるかに複雑であるため、問題の主要部分のみを提示しようとします-DetachedCriteriaでは次のことを達成できません
SELECT *
FROM User
LEFT OUTER JOIN GroupItem
ON User.ID = GroupItem.UserID
AND _groupItemRestrictions_
複数のGroupDefinitionが存在する可能性があり、ユーザーはそれぞれが独自のGroupDefinitionに属する複数のGroupItemに属することができます。ページング/並べ替えと(マルチレベル)グループの動作に関する複雑な理由により、このクエリでは適切なページング動作を実現できません。
SELECT *
FROM User
LEFT OUTER JOIN GroupItem
ON User.ID = GroupItem.UserID
WHERE _groupItemRestrictions_
2番目のクエリと同様のクエリは、次のように生成されます。
var criteria = DetachedCriteria.For<User>()
...
GroupItem groupItem = null;
criteria.CreateAlias(() => groupItemAlias, () => groupItem,
JoinType.LeftOuterJoin);
criteria.Add(Restrictions.Or(...));
...
DetachedCriteriaを使用して最初のクエリを作成することは可能ですか?
ありがとう!