如何从Google App Engine上的查询中仅检索一个实体。我正在使用ORDER BY创建一个查询并使用:
List<Object> objs= (List<Object>) pm.newQuery(query).execute();
if (objs.size() > 0) {
obj= objs.get(0);
}
但是,当我在数据库中有大量的“Objs”时,查询太昂贵了,而且我有太多的延迟。
还有另一种方法可以进行此查询吗?
答案 0 :(得分:3)
这些是查询的有效用法:
// 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
类似的结果