2

私の問題はかなり明白です:

  1. TaskDescriptionApp Engine Datastore の種類 (テーブル) に対応するという名前のクラスがありました。次に、名前を変更しましたがTaskContent、保存されているすべてのデータが失われたようです(いわゆるkind名前であるクラス名が保存されたデータへのパスの一部であるため)。
  2. エンティティクラスの単一のフィールドの名前を変更するたびに、ほぼ同じ問題が発生することを認識しています。

この世界に完璧なものはありません。私は、すべての完全に正しいエンティティをゼロから作成し、その後それらを決して変更しないことが可能であることに疑いを持っています。

では、この問題にどう対処するか?

4

1 に答える 1

2

ふたつのやり方:

  1. エンティティをそのままにして、マッピングを変更します。オブジェクト化では、エンティティをクラス名マッピングに設定できます: @Entity(name="EntityName")。

  2. データストア内のエンティティの変更: データストアはスキーマレスであるため、これは単純なコマンドでは実行できません。エンティティ名を変更するには、新しいエンティティを作成し、すべてのプロパティをコピーして、古いエンティティを削除する必要があります。通常、MapReduce ジョブを使用してデータストアのメンテナンスを実行します。これが JavaのMapReduce です

フィールド名の変更について、objectify はスキーマの移行を明示的にサポートしています (スキーマはありませんが、そのように呼んでいます)。

于 2011-02-28T17:20:26.163 に答える