据我所知,有一个具有祖先的客体查询的对象应该以强一致性查询,这意味着我应该总是得到最新的对象吗?
情况似乎并非如此。
以下是从数据存储中提取数据的示例:
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,但我希望有一些小的我误解。
答案 0 :(得分:2)
您发布的代码没有任何问题。此外,一致性(Consistency.STRONG)调用是不必要的;默认情况下,按键和祖先查询非常一致。
问题不是最终的一致性。
您使用旧版本的Objectify并且忽略了安装ObjectifyFilter吗?从历史上看,这是最可能的问题(它在常见问题解答中)。但是,如果您没有安装过滤器,Objectify的最新版本会抛出异常,因此,如果您是最新的,那么它就是其他内容。