Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Google App engine(Java)中实现祖先或任何其他方式来检索最近的更新?我只能使用单个实体。。,_Java_Google App Engine - Fatal编程技术网

如何在Google App engine(Java)中实现祖先或任何其他方式来检索最近的更新?我只能使用单个实体。。,

如何在Google App engine(Java)中实现祖先或任何其他方式来检索最近的更新?我只能使用单个实体。。,,java,google-app-engine,Java,Google App Engine,及 这些类型的查询用于从数据存储检索数据,但我无法获取最近的更新。对于范围和偏移量的数据存储查询,可以使用 Employees employee = ofy().load().type(Employees.class).id("123").get(); 您可以指定从需要获取的位置开始的偏移量,限制是要获取的结果数听起来您在寻找最终一致性的解决方案。要在查询上获得强一致性,需要使用祖先查询,这需要具有祖先密钥 了解 就objectify而言,fetchbyid始终是强一致的。如果采用以下方法,查


这些类型的查询用于从数据存储检索数据,但我无法获取最近的更新。

对于范围和偏移量的数据存储查询,可以使用

Employees employee = ofy().load().type(Employees.class).id("123").get();

您可以指定从需要获取的位置开始的偏移量,限制是要获取的结果数

听起来您在寻找最终一致性的解决方案。要在查询上获得强一致性,需要使用祖先查询,这需要具有祖先密钥

了解

就objectify而言,fetchbyid始终是强一致的。如果采用以下方法,查询将非常一致:

Query q = new Query("Employees");
q.addFilter("is_active", FilterOperator.EQUAL, isActive);
q.addSort("first_name", SortDirection.ASCENDING);

PreparedQuery pq          =  datastore.prepare(q);
List<Employees> result    =  pq.asList(FetchOptions.Builder.withOffset(5).limit(5));
请注意,在进行最终一致性查询(即带有objectify的非祖先查询)时,objectify返回的实体内容将是正确的,即一致且最新的,但返回的实体将是最终一致性查询的结果

为了实现您的目标,您需要在某个轴上划分员工,并将其用作祖先键。您将面临的主要问题是,实体组上每秒写入一次的限制


父级也不需要实体,只需要一个键。它不需要作为一个条目存在于数据存储中。

如果我是对的,那么您需要数据存储中最近修改的实体?是的…,如果am更新任何字段,有时它只给出我在修改前所做的最后一次更新…,而不是最近的更新…,是否要求您只使用数据存储的低级Api,而不是JDO?只使用低级Api。。,不是任何JDO或JPA
Query q = new Query("Employees");
q.addFilter("is_active", FilterOperator.EQUAL, isActive);
q.addSort("first_name", SortDirection.ASCENDING);

PreparedQuery pq          =  datastore.prepare(q);
List<Employees> result    =  pq.asList(FetchOptions.Builder.withOffset(5).limit(5));
List<Employee> employees = ofy()
          .load()
          .type(Employee.class)
          .ancestor(parentKey)
          .filter("field", value)
          .list()