我在GAE上使用Java API运行基于种类的查询。 以下是示例代码:
DatastoreService dataStore = DatastoreServiceFactory.getDatastoreService();
Filter value1Filter = new FilterPredicate(PROPERTY_1, FilterOperator.EQUAL, value1);
Filter value2Filter = new FilterPredicate(PROPERTY_2, FilterOperator.EQUAL, value2);
Filter myFilter = CompositeFilterOperator.and(value1Filter, value2Filter);
Query findQuery = new Query("MyKIND").setFilter(myFilter);
myEntity = dataStore.prepare(findQuery).asSingleEntity();
PROPERTY_1和PROPERTY_2是索引属性。此查询有效一段时间,现在对某些值一致失败。假设这些值是上面显示的value1和value2。
但是,如果我使用具有相同值value1和value2的数据存储区查看器中的SELECT运行相同的查询,它将起作用并显示结果。我之前怀疑这是最终一致性的结果。但是,索引值已经很久(几个月前)写入,以便在其他实例中进行复制。
有没有办法纠正这种情况?不幸的是,我没有查询实体的密钥。