在 JDO 中迁移字段

Posted

技术标签:

【中文标题】在 JDO 中迁移字段【英文标题】:Migrating fields in JDO 【发布时间】:2011-08-24 22:31:57 【问题描述】:

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

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

enum MyEnum 
    REGULAR,
    MYOLDTYPE // Delete this

@PersistenceCapable
public class Entity 
    @Persistent
    MyEnum myEnumType;
    @Persistent
    String myString; // Rename this


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

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

【问题讨论】:

这可能取决于您的 JDO 提供商。 JDO 规范是否指定了枚举的映射方式,还是由提供者决定? 我正在使用数据核。据我所知,枚举是按名称映射的。 【参考方案1】:

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

如果您更改 Enum,那么您要负责任何一项

    迁移数据存储区的内容

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

【讨论】:

谢谢!我曾希望有一种使用 JDO 迁移数据的标准方法。

以上是关于在 JDO 中迁移字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在迁移后更改D7中某些字段的字段类型

在 Django 1.7 迁移中调用 loaddata 会抛出“‘字段列表’中的未知列‘[字段]’”

Hive 分区字段限制

在创建新字段的迁移时,将数据从一个字段复制到另一个字段的最佳方法是什么?

Django 模型 - 在选择字段中更改选项并迁移

如何从 Laravel 项目中删除所有迁移但保留表和字段