我无法使用 Objectify 可靠地获取我保存的实体。
看起来缓存已损坏。奇怪的是 - 我可以通过管理控制台数据存储查看器正确看到保存的实体。我还编写了一个小程序来使用 RemoteApi 查看实体,我可以正确看到保存的值。
当我使用 servlet 或云端点 rest api 连续查询实体时 - 我的连续查询给出了不同的结果,并且看起来数据存储/缓存中的某些内容已损坏。
我的实体看起来像这样。
class ContentEntity {
@Id Long id;
String html;
@Index String tag;
boolean publish;
}
我这样保存。
ContentEntity entity = ofy().load.type(ContentEntity.class)
.filter("tag", "my tag").first().get();
if (null == entity)
entity = new ContentEntity();
entity.html = "my html";
entity.tag = "my tag";
entity.publish = true;
ofy().save.entity(entity).now();
我像这样检索它。
ContentEntity entity = ofy().load().type(ContentEntity.class).
filter("tag", "my tag").first().get();
发生的情况如下 -
1)让 ContentEntity.html 的初始值为“值 1”
2)保存一个新值 -“值 2”
3)使用管理控制台数据存储查看器我可以看到“值 2”已正确保存。(使用远程 api 我也可以看到“值 2”)
3)使用上面粘贴的检索代码通过 servlet 或 rest api 查看实体。我看到“值 2”
4) 通过 servlet 或 rest api 再次查看实体。我看到“值 1”
5) 再次查看。我看到“值 2”
它不断在“值 1”和“值 2”之间切换
在我的开发环境中一切正常,但在 appengine 中却不行。
看起来我做错了什么并且没有正确处理最终的一致性。我总是想要强烈一致的结果。我不介意我的查询是否慢一点。我应该怎么办 ?
任何提示/建议/帮助将不胜感激。
问候,
沙迪亚