データストアからデータが消えた?いいえ、アプリケーションIDを変更しました。
GoogleAppEngineのアカウントを取得し、WEB-INF/appengine-web.xmlのApplication IDを設定したらデータストアからデータが取得できなくなってしまった。開発用サーバのlocal_db.binにデータそのものは入っているし、新たに追加したものは正常に取得できる。
これはどうやらEntityのkeyにApplication IDが含まれていることが原因のようだ。低レベルAPIのEntityTranslatorでEntityの中身を見ると以下のようになっていることがわかる。
EntityProto ep = EntityTranslator.convertToPb(entity); System.out.println(ep); key < app: "MyAppID" path < Element { type: "MyKind" id: 3 } > > entity_group < Element { type: "MyKind" id: 3 } > property < ... >
EntityのMyAppIDをNewAppIDに変更するには次のようにする。
EntityProto ep = EntityTranslator.convertToPb(entity); ep.getKey().setApp("NewAppID"); Entity newentity = EntityTranslator.createFromPb(ep);
Application IDを修正してやれば、アプリケーションIDの異なるデータストア間のデータ移動・コピーに使えそうだ。