在数据库上从@Enumerated更改为@Enumerated(EnumType.STRING)

时间:2013-07-10 22:55:04

标签: java hibernate jpa

我在已经运行的应用程序中的某些字段上有@Enumerated注释。我被告知要将其更改为@Enumerated(EnumType.STRING)以防止枚举值更改时出现问题。数据库已经填充,所以问题是

将数据库中的值从1,2,3 ..更改为Enum类的相应String值是什么好方法?

2 个答案:

答案 0 :(得分:0)

当您标记此注释时,您的ORM库应自动尝试使用Enum.valueOf()函数将String转换为Enum值。 所以你的DB应该包含你的Enum的String形式,即Enum值的toString()/ name()表示。

答案 1 :(得分:0)

如果您询问如何维护数据并更改数据库,我认为您必须在几个步骤(切换值的基本算法)中执行此操作:

  1. 在表格中添加一个新数字列。
  2. 将列中的值复制到新列。
  3. 删除列的所有内容
  4. 更改表格以使其成为字符串列
  5. 将备份列中的值复制回原始值。
  6. 这是非常详细的,我不确定这是不是你要问的......