嗨 在数据库中,我们有一个 PRSN_ADDRESS 表,其中包含许多地址。在网格中向用户显示这些地址。要求是先显示与该用户状态相关的地址,然后再显示所有其他状态。
例如,假设该表有 10 条记录,其中 5 个地址的州为马里兰州,2 条来自宾夕法尼亚州,3 条来自新泽西州。现在,如果用户与马里兰州相关联,我们需要显示所有 10 个地址,但马里兰州地址应显示在前 5 个中,然后按任意顺序显示其他 5 个。
我们正在使用 hibernate 标准。我没有研究过公式,不确定这是否有助于解决问题。如果有人能指出我正确的方向,那就太好了。我很感激。
谢谢
哈里什
最佳答案
您可以按条件值排序...
(NHibernate 方式,有人知道 Hibernate 中的等价物吗?)
.AddOrder(Order.Asc(
Projections.Conditional(
Restrictions.EqProperty("addr.state", "user.state"), Projections.Constant(0), Projections.Constant(1))))
.AddOrder(Order.Asc("addr.state"))
翻译成...
order by
case when addr.state = user.state then 0 else 1 end,
addr.state
关于特定状态的 hibernate 条件顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510810/