Hibernate,标准API,任意排序枚举字段



任意排序字段的最佳方法是什么?

的例子:

每个Content都有一个StatusStatusid为enum。企业希望看到Content的列表按照Status.Id.REJECTEDStatus.Id.IN_WORKStatus.Id.PENDING的顺序排序。

如您所见,它不是按字母顺序排序的。有些人可能会改变他们的想法,想要不同的排序或添加更多的状态。

处理这种情况的最好方法是什么?我能想出的唯一解决方案是将order添加到Status或单独查询每个Status,然后以编程方式将其拼接在一起。但是那看起来很脏。

我知道这个前提有些荒谬,但这不是我的,我无法控制它。如有任何帮助,不胜感激。

最后,我发现最干净的方法是添加int status.order,然后按该列订购状态。这为我提供了:

  • 仅使用Criteria API的能力
  • 不考虑数据层排序背后的业务原因的更干净的代码
  • 通过更改数据库中的值来实时更改排序的能力。

最后一点对我来说是真正的卖点,因为业务方面有一个习惯,即不完全考虑他们的需求,并且需要在开发期间和发布后多次更改它们。

您可以使用ordinal。但正如你所说,它可能会随着时间的推移而改变。

然后您可以更改查询,并让DB执行此操作。使用HQLSQL更容易。

select 
    case 
       when a.FIELD = 'something' 
       then 1 
       else 0 
    end as myOrdr 
from A a 
order by myOrdr

无论哪种方式,您都必须触摸代码来更改顺序。

最新更新