更新应用引擎实体不可靠

时间:2014-08-25 12:25:50

标签: google-app-engine objectify

我尝试通过简单地用更新的值覆盖它来更新我的appengine实体。它在数据存储查看器中正确显示,但是当我尝试在我的应用程序中检索它时,它有时会提供较旧的值,有时会更新。 我正在使用Objectify

@ApiMethod(name = "saveUser")
    public void saveUser(User user) {

        ofy().save().entity(user).now();
    }

@ApiMethod(name = "getUser")
    public User getUser(@Named("gdgId") Long id) {

        return ofy().load().type(User.class).id(id).now();
    }

所以我打电话,在我想插入/更新用户时保存用户,并调用getUser来检索与id关联的用户对象。 我没有使用缓存(@Cache注释)

2 个答案:

答案 0 :(得分:1)

来自Objectify文档:

  

每个Objectify实例都包含已经存在的实体缓存   在那个会话中加载。这可以防止其中的后续负载   需要出去到数据存储区的会话。缓存保持不变   实体实例和(事务除外)将   始终返回相同的实际对象实例。

     

此缓存与启用/禁用的全局内存缓存分开   @Cache注释和Objectify.cache()参数。

请注意,省略@Cache注释不会禁用此缓存行为。

答案 1 :(得分:0)

确保您的应用程序中已安装ObjectifyFilter。我建议这看起来像最终的一致性,但是你正在执行一个非常一致的按键操作。所以看起来会因缺少过滤器导致会话缓存渗透。