gpt4 book ai didi

nhibernate - 如何使用左连接查询在 NHibernate 中实现分页

转载 作者:行者123 更新时间:2023-12-04 06:56:17 24 4
gpt4 key购买 nike

我有一个 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 joinDistinctRootEntity ,这可能返回少于 x 个订单。

我试过 "select distinct o"同样,但是为此生成的 sql(使用 sqlserver 2008 方言)似乎忽略了 distinct对于第一个之后的页面(我认为 this 是问题所在)。

实现这一目标的最佳方法是什么?

最佳答案

使用 SetResultTransformer(Transformers.AliasToBean()) 并获取不是实体的数据。

另一种解决方案是更改查询。
正如我所看到的,您正在返回包含正在处理的产品的订单。
所以你可以使用exists语句。在 13.11 检查 nhibernate 手册。子查询。

关于nhibernate - 如何使用左连接查询在 NHibernate 中实现分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com