0

AppEngine JavaアプリでJDOとGoogleデータストアを使用していますが、すべて正常に機能しています。

@PersistanceCapableクラスに新しい属性を追加してデプロイすると、「古い」既に永続化されたエンティティは表示されなくなります。私は何が起こっているのか本当に理解していません。このテーマについて共有する理論的背景はありますか?クラスを同じものの新しいバージョンに置き換え(serialUIDフィールドは同じまま)、コンパイルしてデプロイすると、既存の「古いバージョン」のエンティティをループして、不足している情報で更新できるはずです。それらはアプリケーションで利用可能なままになります!これを達成する方法は?何も思いつきません。

EG私は約35の「ロケーション」エンティティ(Location.class)を持っています。Location.classを更新して、新しい@Persistent属性「LongLocationExternalID;」を提供します。ゲッター/セッターと一緒に。また、このフィールドを使用するようにアプリコードを変更します。すべての古いエンティティをループして、この新しい属性を追加し、その値を設定するにはどうすればよいですか?逆シリアル化の前に属性が使用可能かどうかをテストしているように見えますか?

所有されていない関係でそれらのキーが参照されているため、古いエンティティを削除して再作成することはできません。そうするのは大変な作業です。

表示されていないということは、クエリを介して、アプリの読み込み時にすべての要素をフェッチしてドロップダウンに表示することを意味します。次に、アプリを介して新しいものを追加すると、ドロップダウンに表示され、期待どおりに動作します。古い要素を含むすべての要素がデータストアビューアに表示されます。

4

0 に答える 0