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