2

我只会尝试提出问题的主要部分,因为整个情况要复杂得多 - 我无法使用 DetachedCriteria 实现以下目标

SELECT *
FROM User
LEFT OUTER JOIN GroupItem
ON User.ID = GroupItem.UserID
AND _groupItemRestrictions_

可以有多个 GroupDefinition,用户可以属于多个 GroupItem,每个 GroupItem 都属于它自己的 GroupDefinition。由于分页/排序和(多级)组行为的一些复杂原因,我无法使用此查询实现适当的分页行为:

SELECT *
FROM User
LEFT OUTER JOIN GroupItem
ON User.ID = GroupItem.UserID
WHERE _groupItemRestrictions_

以这种方式生成类似于第二个查询的查询:

var criteria = DetachedCriteria.For<User>()
...
GroupItem groupItem = null;
criteria.CreateAlias(() => groupItemAlias, () => groupItem,
                                                JoinType.LeftOuterJoin);
criteria.Add(Restrictions.Or(...));
...

是否可以使用 DetachedCriteria 创建第一个查询?

谢谢!

4

1 回答 1

2

似乎还没有办法用 DetachedCriteria 指定这样的查询,但是 HQL 使用“with”子句:

http://fabiomaulo.blogspot.com/2009/05/nhibernate-210-hql-with-clause.html

http://www.mail-archive.com/nhusers@googlegroups.com/msg08451.html

更新:

https://nhibernate.jira.com/browse/NH-1946

该功能现已实施。感谢NH团队:)

于 2009-08-27T17:00:58.477 回答