6

プロジェクトの1つで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.valueOf(String)が古い値をマップしたいものを返すように、Enum定義を変更します。または、RDBMSに固執する場合は、 http: //www.datanucleus.org/products/accessplatform_3_0/jdo/types.htmlの下部にあるDataNucleus拡張機能を利用して、文字列値の列挙型を取得するメソッドを定義します。

于 2011-05-16T15:00:07.017 に答える