私が見ている問題を理解しようとしています。たとえば、新しいフィールドを追加してエンティティ オブジェクトの定義を変更すると、データストアに既に存在する以前のレコードから結果を取得できなくなることがあります。たとえば、次の例では、データストアにエンティティが表示されていますが、次の例外が発生しています。
SEVERE: クエリの結果がありません: SELECT FROM com.alero.services.model.MyEntity myEntity WHERE myEntity.key = :key
GAE データストアで JPA を使用しています。
問題を修正して結果を再び取得できるように思われる唯一の方法は、appengine によって生成されたディレクトリを削除してから、エンティティを再作成することです。何らかの方法でキャッシュされていますか?また、その場合にキャッシュを削除する必要があることをデータストアが認識できるようにするために何かすべきことはありますか?
String queryString = "select from " + MyEntity.class.getName()
+ " myentity where myentity.key = :key";
Key keySub = KeyFactory.createKey("MyEntity", myEntityId);
Query query = em.createQuery(queryString);
query.setParameter("key", KeyFactory.keyToString(keySub));
try {
MyEntity myEntity = (MyEntity) query.getSingleResult();
em.close();
return myEntity;
} catch (Exception e) {
log.severe(e.getMessage());
em.close();
}