应用引擎数据存储检索已删除的实体

时间:2017-05-24 12:08:42

标签: google-app-engine google-cloud-datastore objectify

我正在尝试删除某种实体。删除后我试图在同一种类型上进行查询。但问题是,即使在删除所有实体之后,查询也会给出带有'n'行数的结果。我知道这是HRD问题,其中索引尚未删除。但我想知道查询在哪里获取数据,虽然我们删除了实际数据。

考虑以下代码,

class CustomReportInfo {
  String reportName;

 // Setter and getters
}

这里我尝试删除CustomReportInfo类实体。为了删除我正在做的实体,

List<CustomReportInfo> customReportInfoList = query(CustomReportInfo.class).list();
delete(customReportInfoList);

因此,如您所见,我将删除CustomReportInfo的所有实体。之后,我试图在同一种类型上进行查询。像,

List<CustomReportInfo> list = query(CustomReportInfo.class).list();

删除后我仍然获得'n'行数。即使在删除实际数据之后,查询从哪里获得结果?

1 个答案:

答案 0 :(得分:0)

Cloud Datastore中的最终一致性意味着如果您运行全局查询(如示例中的那个),它可能会返回已删除的结果。

要确保已删除的实体不会出现在查询结果中,您可以将实体重组为用户祖先。在this article中概述了其中一些问题。