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

时间:2015-02-16 15:09:26

标签: 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);

FetchOptions options = FetchOptions.Builder.withLimit(25);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = 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);

再次,在成千上万的实体中,我需要抓住最新添加的25个实体。我该怎么做?

1 个答案:

答案 0 :(得分:0)

SortDirection.ASCENDING表示首先获取最早的实体(即lastestEditDate值最小的实体)。

你想要的恰恰相反 - 最新的实体(即{strong>最大值为lastestEditDate)的实体。

因此,请使用SortDirection.DESCENDING

相关问题