【发布时间】:2011-12-06 16:32:35
【问题描述】:
我正在使用这个 QueryOver 编写一个可排序网格的查询:
IQueryOver<Order, Order> query = session.QueryOver(() => _OrderAlias);
query.Left.JoinQueryOver(() => _OrderAlias.Employees, () => _OrderEmployeeAssigneeAlias,
() => _OrderEmployeeAssigneeAlias.OrderEmployeeType == OrderEmployeeType.Assignee);
query.Left.JoinQueryOver(() => _OrderAlias.Employees, () => _OrderEmployeeSalespersonAlias,
() => _OrderEmployeeSalespersonAlias.OrderEmployeeType == OrderEmployeeType.SalesPerson);
query.OrderBy(() => _OrderEmployeeSalespersonAlias.LastName).Desc;
有条件地,查询将按受让人排序,而不是按 销售人员,所以这就是多个连接到同一个的原因 桌子。
运行这个查询会产生这个异常:
NHibernate.QueryException: duplicate association path: Employees --->
System.ArgumentException: An item with the same key has already been
added.
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue
value, Boolean add)
at NHibernate.Util.LinkedHashMap`2.Add(TKey key, TValue value)
at
NHibernate.Loader.Criteria.CriteriaQueryTranslator.CreateAssociationPathCri teriaMap()
我看过有关使用 HQL 执行此操作的帖子,还有一些这样说 Criteria API 目前不支持。
这是正确的吗? HQL 是两次加入集合的唯一方法吗?
我可以使用 QueryOver 做到这一点吗? (另外,有没有更好的方法 这比使用两个连接?)
提前致谢。
【问题讨论】:
-
您好,我在其他帖子中发布了我的回答同样的问题,如果您还有问题可以查看link
标签: c# .net nhibernate orm queryover