在Google App Engine上检索TOP 1

时间:2011-08-25 12:42:00

标签: java google-app-engine jdo

如何从Google App Engine上的查询中仅检索一个实体。我正在使用ORDER BY创建一个查询并使用:

List<Object> objs= (List<Object>) pm.newQuery(query).execute();
if (objs.size() > 0) {
    obj= objs.get(0);
}

但是,当我在数据库中有大量的“Objs”时,查询太昂贵了,而且我有太多的延迟。

还有另一种方法可以进行此查询吗?

2 个答案:

答案 0 :(得分:3)

查看this document

这些是查询的有效用法:

// Construct then prepare your query
List<Entity> get5TallestPeople() {
    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
    Query q = new Query("Person");
    q.addSort("height", SortDirection.DESCENDING);
    PreparedQuery pq = ds.prepare(q);
    return pq.asList(FetchOptions.Builder.withLimit(5));
}

return pq.asList(FetchOptions.Builder.withLimit(5).offset(5)));

在你的情况下,我猜你可以使用后一种语法。

它使用的是低级Java API而不是JDO,但它不应该让您不再使用它。

答案 1 :(得分:-1)

您是否尝试过使用fetch方法...这可以为您提供与top 1类似的结果