Nhibernate DetachedCriteria左外连接子查询

时间:2009-08-27 15:55:04

标签: c# sql nhibernate subquery detachedcriteria

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

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

可以有多个GroupDefinitions,User可以属于多个GroupItems,每个GroupItems都属于它自己的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创建第一个查询?

谢谢!

1 个答案:

答案 0 :(得分: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团队:)