Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Java 如何从App Engine数据存储实体种类中获取最新的25个条目_Java_Sorting_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Java 如何从App Engine数据存储实体种类中获取最新的25个条目

Java 如何从App Engine数据存储实体种类中获取最新的25个条目,java,sorting,google-app-engine,google-cloud-datastore,Java,Sorting,Google App Engine,Google Cloud Datastore,我有一个实体类(即~表),有数千个条目。我想取最新的25个条目。我该怎么做?以下逻辑不起作用:它返回最旧的25 Filter timestampFilter = new FilterPredicate("lastestEditDate", FilterOperator.GREATER_THAN_OR_EQUAL, 0); Query query = new Query(CatMeow.class.getSimpleName()).setFilter(timestampFilter); Fetc

我有一个实体类(即~表),有数千个条目。我想取最新的25个条目。我该怎么做?以下逻辑不起作用:它返回最旧的25

Filter timestampFilter = new FilterPredicate("lastestEditDate", FilterOperator.GREATER_THAN_OR_EQUAL, 0);
Query query = new Query(CatMeow.class.getSimpleName()).setFilter(timestampFilter);

FetchOptions options = FetchOptions.Builder.withLimit(25);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = datastore.prepare(query).asQueryResultList(options);
Filter timestampFilter=new FilterPredicate(“lastestEditDate”,FilterOperator.GREATER\u大于或等于,0);
Query Query=新查询(CatMeow.class.getSimpleName()).setFilter(timestampFilter);
FetchOptions=FetchOptions.Builder.withLimit(25);
DatastoreService datastore=DatastoreServiceFactory.getDatastoreService();
QueryResultList实体=datastore.prepare(query).asQueryResultList(options);
我认为我需要完全改变我的逻辑。考虑过之后,我认为时间戳过滤器是不相关的。所以我改为以下逻辑,这也不起作用:它不返回最新的实体

Query query = new Query(CatMeow.class.getSimpleName()).
            addSort("lastestEditDate", SortDirection.ASCENDING);
FetchOptions options = FetchOptions.Builder.withLimit(25);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = datastore.prepare(query).asQueryResultList(options);
Query Query=新查询(CatMeow.class.getSimpleName())。
addSort(“lastestEditDate”,SortDirection.升序);
FetchOptions=FetchOptions.Builder.withLimit(25);
DatastoreService datastore=DatastoreServiceFactory.getDatastoreService();
QueryResultList实体=datastore.prepare(query).asQueryResultList(options);

因此,在成千上万的实体中,我需要获取最近添加的25个实体。如何操作?

排序方向。升序意味着首先获取最古老的实体(即具有最小值
lastestEditDate
)的实体

您想要的正好相反--最新的实体(即最大的值为
lastestEditDate
)首先


因此,请改用排序方向。降序我已经试过了。这没什么区别。它仍然没有给我最新的25。取而代之的是,它让我以不同的顺序安排了一些早期的场景。因此,似乎是在获取错误的集合之后才进行排序。我需要获取正确的集合。如果
lastestEditDate
设置正确(尽管拼写错误:-),代码应该可以工作——获取依赖于顺序。您能否编辑Q以显示(A)如何构建
CatMeow
实体,以及(B)您获得的一个小样本(仅5个就可以了,不需要显示25个,也不需要显示
lastestEditDate
之外的所有属性,以及某种区别名称属性)以及其他你认为应该得到的实体。我认为问题出在代码中未显示的部分,而不是您显示的部分。@KatedralPillon,谢谢您的接受!,但是你能解释一下(编辑你的Q或者在评论中)你是如何解决这个问题的,这样将来有类似问题的读者可以从你的经历中受益吗?谢谢我没有索引集,所以查询返回500。我没有注意到。所以你的答案实际上是正确的。我只是忘了把它设为索引。