据我了解,使用对象化查询的对象具有祖先,应该以高度一致性进行查询,这意味着我应该始终获取最新的对象吗?

似乎并非如此。

以下是从数据存储区提取数据的示例:

  Key<Rule> k = Key.create(Key.create(NinjaAccount.class, accountId), Rule.class, ruleId);
  return ofy().consistency(Consistency.STRONG).load().key(k).now();

或查询多个实体:
return ofy().consistency(Consistency.STRONG).load().type(Rule.class).ancestor(Key.create(NinjaAccount.class, accountId))
    .list();

但是,当我更新Rule对象上的一个字段时,我可以连续运行此代码几次,并使它在新值和旧值之间来回翻转。我究竟做错了什么??我几乎已经准备好切换到mysql,但是我希望我误会了一些小东西。

最佳答案

您发布的代码没有错。另外,consistency(Consistency.STRONG)调用是不必要的;默认情况下,按键获取和祖先查询是高度一致的。

问题不是最终的一致性。

您是否正在使用旧版本的Objectify,而忽略了安装ObjectifyFilter?从历史上看,这是最可能出现的问题(在FAQ中)。但是,如果您尚未安装过滤器,则最新版本的Objectify会引发异常,因此,如果您是最新的,则可能是其他情况。

10-02 07:04