如何阻止Objectify返回缓存值?

Ben*_*ynn 2 objectify

我用这样的Objectify保存了一个对象:

Thing th = new Thing();
th.identifier = thingId;
th.name = thingName;
th.json = thingData;
ofy().save().entity(thing);
pResponse.setStatus(200);
pResponse.getWriter().println("OK");
Run Code Online (Sandbox Code Playgroud)

我使用GAE数据存储浏览器验证数据库中的值是否已更新.我在当地跑步.然后我加载所有这样的东西:

Map<String, List<Thing>> responseJsonMap = new HashMap<String, List<Thing>>();
List<Thing> things = ofy().load().type(Thing.class).list();         
responseJsonMap.put("things", things);
pResponse.setContentType("application/json");
try {
    GSON.toJson(responseJsonMap, pResponse.getWriter());
} ...
Run Code Online (Sandbox Code Playgroud)

我得到的是保存之前存在的数据.我试过在实体和调用上关闭缓存ofy().clear()但是都没有工作.如果我重新启动服务器或等待足够长的时间,保存的数据就会通过.我还尝试.now()在保存后添加,但没有必要,因为我可以在数据存储区中验证操作已完成.我真的希望能够加载我刚刚保存的数据.我究竟做错了什么?

Ben*_*ynn 5

我做错了不是阅读手册而忘记了一步.

Objectify需要一个过滤器来清理任何线程本地事务上下文和保留在请求结束时的挂起异步操作.将其添加到您的WEB-INF/web.xml:

<filter>
     <filter-name>ObjectifyFilter</filter-name>
     <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
     <filter-name>ObjectifyFilter</filter-name>
     <url-pattern>/*</url-pattern> 
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

好吧,检查一下你是否收到了你真正不想要的缓存值.