Разбиение на страницы в Google App Engine with Java

Я должен создать простое разбиение на страницы объектов, но когда я прочитал руководство, я узнал что query.setRange (5, 10); выберет 10 объектов, даже когда только 5 объектов необходимы.

Там должен так или иначе выбрать просто необходимые объекты?

Править: Я запустил щедрость, таким образом, fi, можно показать мне простой пример кода в Java, который работает, затем я признаю, что Вы отвечаете.

7
задан newbie 13 June 2010 в 09:55
поделиться

4 ответа

Возможно, вам стоит рассмотреть возможность использования курсоров, а не setRange, если вы пытаетесь сделать пагинацию.

0
ответ дан 7 December 2019 в 12:15
поделиться

На сайте App Engine есть статья по этой теме:

http://code.google.com/appengine/articles/paging.html

Примеры написаны на Python, но они простые достаточно, чтобы вы могли довольно легко перевести на Java.

Вот реализация Java , которую я не читал и не тестировал.

1
ответ дан 7 December 2019 в 12:15
поделиться

Как насчет этого:

List<Employee> results = (List<Employee>) query.execute();
// Use the first 20 results...

Cursor cursor = JPACursorHelper.getCursor(results);
String cursorString = cursor.toWebSafeString();
// Store the cursorString...

// ...

// Query query = the same query that produced the cursor
// String cursorString = the string from storage
Cursor cursor = Cursor.fromWebSafeString(cursorString);
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
query.setRange(0, 20);

List<Employee> results = (List<Employee>) query.execute();
// Use the next 20 results...

Из:

How to use datastore cursors with jpa on GAE

Также:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/5223215ff24c3b3e/d22297d1d76a9c8b

Или без JPA смотрите:

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Cursor. html

3
ответ дан 7 December 2019 в 12:15
поделиться

Почему возникает проблема, если из базы данных возвращено 10 объектов? Вам по-прежнему будут возвращены только 5 объектов, которые вам небезразличны (первые 5 отбрасываются).

Я не спрашиваю, потому что считаю, что метод setRange - это решение, которое невероятно хорошо масштабируется, но это простое и разумное решение, более чем адекватное в большом количестве случаев.

Планируете ли вы разбивать на страницы очень большие таблицы или включать дорогостоящие объединения? Если нет, у меня возникнет соблазн использовать setRange в качестве отправной точки для вашей нумерации страниц.

1
ответ дан 7 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: