我有一个 NHibernate 查询,如下所示:
var query = Session.CreateQuery(@"
select o
from Order o
left join o.Products p
where
(o.CompanyId = :companyId) AND
(p.Status = :processing)
order by o.UpdatedOn desc")
.SetParameter("companyId", companyId)
.SetParameter("processing", Status.Processing)
.SetResultTransformer(Transformers.DistinctRootEntity);
var data = query.List<Order>();
我想为此查询实现分页,因此我只返回 x 行而不是整个结果集。
我知道 SetMaxResults()
和 SetFirstResult()
,但是因为 left join
和 DistinctRootEntity
,可能会返回少于 x 个订单。
我也尝试了“select different o”
,但是为此生成的sql(使用sqlserver 2008方言)似乎忽略了之后页面的distinct
第一个(我认为 this 是问题所在)。
实现这一目标的最佳方法是什么?
最佳答案
在这些情况下,最好在两个查询中执行此操作,而不是一次:
- 加载订单页面,没有连接
- 使用
in
运算符加载这些订单及其产品
关于nhibernate - 如何在 NHibernate 中使用左连接查询实现分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526817/