我有很多(30+)Java枚举,它们映射到数据库中的整数ID。我希望能够在不修改许多查询的情况下对它们进行排序,并能够对排序顺序进行索引。
示例 - 请注意,许多其他枚举可能有十几个选项,因此不是很简单:
表1:人 名称(varchar),性别(枚举) 鲍勃,0 弗雷德,0 苏珊,1 杰米,2
Java enum - 男性(0), 女性(1), 未知(2)
我希望能够通过person.sex订购,订单为“女性”,“男性”,“未知”。 (或数字顺序为1,0,2)。理想情况下,这个顺序可以根据语言变化,但是可以使用1个语言/数据库。
我意识到我可以通过case子句进行排序,但这需要更改应用程序中的大量位置,包括许多动态生成的查询。
我也支持postgres,它允许我将其定义为枚举(1,0,2),解决所有这些问题,至少对于1种语言/数据库。这样的事情非常有价值。
我已经考虑过制作一个带有ID和名称的“性别”表,并按此排序。不幸的是,为了按性别订购人员表(数百万条目),我需要很长时间,因为我不能在性别列上做一个索引(或者至少有一个在排序中有用)。
我也考虑过使用自定义类型,但在那时我不太确定如何将它与hibernate集成(自定义类型似乎并不那么灵活)。
任何想法都将不胜感激。感谢。