2016-06-18 28 views
0

我有一列timezone,其中有一組常量可用數值[2,3,4,5,6,7,8](不能更改此值) 。因此,對於映射似乎正確的選擇一些枚舉類型等的值:使用非零開始值在數值列上映射枚舉字段

[夏威夷= 2,阿拉斯加= 3,太平洋= 4,山= 5,中部= 6,東= 7,大西洋= 8]

並將其映射爲:@Enumerated(EnumType.ORDINAL)

但我的問題是:無法在java中移動枚舉開始數。 作爲解決方法,我可以使用樁來填充枚舉以進行移位。但我覺得這不是靈活的,因爲任何人都可以調用MyEnum.values()。

也許有人知道在這種情況下使用枚舉的適當方式?

回答

1

JPA 2.1 AttributeConverter是處理這種轉換的一種方式,並且是便攜式的。 AttributeConverter將在枚舉類型和Integer之間進行轉換。某些JPA提供程序有其自己的非便攜式處理,您必須查閱提供商的文檔以查看它是否提供了任何內容。

請參閱this issue更好地處理JPA中的枚舉的請求;並非JPA規範發展已經開始。

+0

正是我所期待的。謝謝! –