gpt4 book ai didi

sql - NHibernate 排序(SQL 作为第二个选项)

转载 作者:行者123 更新时间:2023-12-01 17:27:03 25 4
gpt4 key购买 nike

我正在使用 NHibernate 作为我的 ORM,并且我正在尝试对一些数据进行排序。数据需要分页检索。

我的请求表中的两列是 UrgencyID 和 CreateDate。 UrgencyID 是包含静态数据的 Urgency 表的 FK:1 = 低,2 = 正常,3 = 高,4 = 严重。

我需要按以下方式订购我的请求。按 CreateDate 降序排列的关键请求CreateDate 降序的所有其他请求

因此,我的请求列表应始终将“Critical by CreateDate desc”放在顶部,然后将所有其他请求(忽略 UrgencyID)按 CreateDate desc

是否可以在 NHibernate 中执行这种排序顺序(使用 Criteria API)?

如果没有,我该如何在 SQL 中执行此操作?在存储过程中?

编辑:感谢@DanP和@Michael Pakhantsov的解决方案

在 sql 字符串中使用 this_ 前缀,因为这是主表选择的默认 NHibernate 前缀。

public class OperatorJobQueueOrder : Order
{
public OperatorJobQueueOrder() : base("", true) { }
public override NHibernate.SqlCommand.SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
{
return new NHibernate.SqlCommand.SqlString("case this_.JobRequestUrgencyID when 4 then 4 else 0 end desc, this_.CreatedDate");
}
}

最佳答案

您可以创建自定义排序顺序来通过 Critiera API 处理此问题;请参阅this question示例实现。

关于sql - NHibernate 排序(SQL 作为第二个选项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3362380/

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