Как я могу получить только одну сущность из запроса в Google App Engine. Я создаю запрос с ORDER BY и использую:
List<Object> objs= (List<Object>) pm.newQuery(query).execute();
if (objs.size() > 0) {
obj= objs.get(0);
}
Но когда у меня есть большое количество «Objs» в базе данных, запрос становится слишком дорогим, и у меня слишком большая задержка.
Есть другой способ сделать этот запрос?
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, но это не должно отвлекать вас от его использования.
Пробовали ли вы использовать метод fetch
.. это может дать вам результат, аналогичный top 1
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].