迁移JDO中的字段

时间:2011-05-13 13:07:10

标签: java schema jdo datanucleus database-migration

我们正在其中一个项目中使用JDO。这已经运行了很长一段时间,我们自然需要稍微改变模型。

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

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

}

如果我删除枚举值,如果从数据库加载时已经存在异常,那么如何迁移它?

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

1 个答案:

答案 0 :(得分:1)

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

如果您更改了枚举,那么您将负责

  1. 迁移数据存储区的内容

  2. 更改枚举定义,以便Enum.valueOf(String)返回您希望旧值映射到的内容。或者,如果持久化到RDBMS,请在http://www.datanucleus.org/products/accessplatform_3_0/jdo/types.html的脚下使用DataNucleus扩展,您可以在其中定义一个方法来获取字符串值的枚举。