在Oracle 11g中进行i18n友好的枚举排序

时间:2013-09-24 23:18:32

标签: java sql oracle hibernate oracle11g

我有很多(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集成(自定义类型似乎并不那么灵活)。

任何想法都将不胜感激。感谢。

0 个答案:

没有答案