Java 如何从App Engine数据存储实体种类中获取最新的25个条目
我有一个实体类(即~表),有数千个条目。我想取最新的25个条目。我该怎么做?以下逻辑不起作用:它返回最旧的25Java 如何从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
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。我没有注意到。所以你的答案实际上是正确的。我只是忘了把它设为索引。