6

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

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

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

}

如果我删除一个枚举值,如果它在从数据库加载时已经持久化,则会出现异常,如何迁移它?

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

4

1 回答 1

1

首先查看您的数据存储(RDBMS?,其他什么?),看看您是持久化为字符串还是基于数字的。

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

  1. 迁移数据存储的内容

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

于 2011-05-16T15:00:07.017 回答