Получить ТОП 1 в Google App Engine - PullRequest
       30

Получить ТОП 1 в Google App Engine

1 голос
/ 25 августа 2011

Как я могу получить только один объект из запроса в Google App Engine. Я создаю запрос для ORDER BY и использую:

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

Но, когда у меня в базе данных большое количество «объектов», запрос слишком дорогой, и у меня слишком большая задержка.

Есть еще один способ сделать этот запрос?

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Посмотрите на этот документ .

Это допустимое использование запроса:

// 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, но это не должно мешать вам использовать его.

0 голосов
/ 25 августа 2011

пытались ли вы использовать метод fetch ... это может дать вам результат, аналогичный top 1

...