我们正在其中一个项目中使用JDO。这已经运行了一段时间,自然我们需要对模型进行一些更改。

在JDO中迁移实体类中的字段时的最佳实践是什么?

enum MyEnum {
    REGULAR,
    MYOLDTYPE // Delete this
}
@PersistenceCapable
public class Entity {
    @Persistent
    MyEnum myEnumType;
    @Persistent
    String myString; // Rename this

}

如果我删除一个枚举值,那么从数据库加载时如果该枚举值已经存在,则会出现异常,该如何迁移呢?

如果我想将myString重命名为myNewString,如何将列重命名为新名称?

最佳答案

首先,查看您的数据存储区(RDBMS ?,还有其他内容?),看您是持久存储为String还是基于数字的存储。

如果更改枚举,则您要负责任一个

  • 迁移数据存储区
  • 的内容
  • 更改Enum定义,以便Enum.valueOf(String)返回您希望将旧值映射到的内容。另外,如果坚持使用RDBMS,请使用http://www.datanucleus.org/products/accessplatform_3_0/jdo/types.html底部的DataNucleus扩展,在其中定义一种方法来获取String值的Enum。
  • 关于java - 迁移JDO中的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5992296/

    10-09 09:52