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

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

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

Есть другой способ сделать этот запрос?

1
Victor 25 Авг 2011 в 16:42

2 ответа

Лучший ответ

Ознакомьтесь с этим документом.

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

// 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)));

В вашем случае, я думаю, вы можете использовать последний синтаксис.

Он использует низкоуровневый API Java, а не JDO, но это не должно отвлекать вас от его использования.

3
n0rm1e 25 Авг 2011 в 13:03

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

-1
Anantha Sharma 25 Авг 2011 в 12:49