Google App Engine实体管理器检索旧值

时间:2014-03-25 20:58:36

标签: google-app-engine persistence google-cloud-endpoints

使用GAE,我使用javax的实体管理器(javax.persistence.EntityManagerFactory)来生成实体管理器的实例:

private static final EntityManagerFactory emfInstance = Persistence.createEntityManagerFactory("transactions-optional");

我使用以下代码从数据存储中检索:

event = mgr.find(Event.class, id);

我遇到的问题是,如果我第一次检索数据,一切都会好起来的。但是,如果我通过GAE仪表板中的“数据存储查看器”手动编辑值。下次使用“find”方法调用数据时,返回的值是旧值。我必须再次手动上传后端才能获得新值。

知道造成这种情况的原因是什么?我希望mgr.find始终调用最新值。感谢。

2 个答案:

答案 0 :(得分:0)

正在缓存实体。当您通过数据存储区查看器进行更改时,后端缓存的实体不会受到影响。

在数据存储区查看器中进行更改后,单击“Flush Memcache”按钮。

如果这没有帮助,您可能需要更改缓存的配置:

  

默认情况下启用Level2缓存。获取先前的默认值   行为,设置持久性属性datanucleus.cache.level2.type   没有。 (或者包括在中的datanucleus-cache插件   classpath,并设置持久性属性   datanucleus.cache.level2.type到javax.cache使用Memcache for L2   缓存。

答案 1 :(得分:0)

尝试刷新内存缓存,然后再次尝试查询。大多数情况下,最后一个持久化的实体数据是在您执行此操作之前检索的内容。