我有一个列timezone
,其中包含一组常量可用数值[2,3,4,5,6,7,8](无法更改此值)。因此,对于映射,选择一些具有以下值的枚举类型似乎是正确的:
[Hawaii = 2,Alaska = 3,Pacific = 4,Mountain = 5,Central = 6,Eastern = 7,Atlantic = 8]
并将其映射为:@Enumerated(EnumType.ORDINAL)
但我的问题是:无法在java中移动枚举起始编号。 作为解决方法,我可以使用存根填充枚举以进行移位。但我发现这不灵活&丑陋,考虑到任何人都可以调用MyEnum.values()。
可能有人知道在这种情况下使用枚举的适当方法吗?
答案 0 :(得分:1)
JPA 2.1 AttributeConverter
是处理此类转换的一种方式,并且是可移植的。 AttributeConverter
将在枚举类型和整数之间进行转换。有些JPA提供商有自己的非便携式处理,您必须查阅提供商的文档,看看它是否提供了任何内容。
请参阅this issue,要求更好地处理JPA中的枚举;并不是说JPA规范开发不再活跃。