#json #spring #jpa #spring-data-jpa #pageable
#json #весна #jpa #spring-data-jpa #разбиение на страницы
Вопрос:
В моем проекте есть служба, которая извлекает список документов. До сих пор их можно было получить с помощью объекта разбивки на страницы, таким образом, мы не отправляем обратно во внешний интерфейс все элементы.
public Page<Document> findDocumentPage(Pageable pageable) {
return this.documentService.findAllByPage(pageable);
}
Проблема в том, что мне нужен глобальный индекс документа со всех страниц. Например, допустим, у меня есть список страниц с результатами после запроса:
firstResult:{
page: 1,
document_list: [{doc:{ id: a, content: ''}},
{doc:{ id: b, content: ''}},
{doc:{ id: c, content: ''}}]
}
secondResult:{
page: 2,
document_list: [{doc:{ id: d, content: ''}},
{doc:{ id: e, content: ''}},
{doc:{ id: f, content: ''}}]
}
Эти результаты не зависят друг от друга. Есть ли способ сообщить, что документ с идентификатором «e» является 5-м элементом во всех результатах страниц, не имея доступа к результатам предыдущей страницы. Также страницы могут иметь разные размеры, у некоторых может быть 30 результатов, у других 20, это может быть x.
Я согласен с сохранением списка в бэкэнде с количеством элементов предыдущих страниц, а затем вычислением индекса на основе номера страницы, индекса на текущей странице и размера предыдущих страниц. Однако мне это не кажется удачным решением.
Ответ №1:
Если у вас есть Page
представление одного из результатов, это можно легко вычислить для всех элементов на этой странице следующим образом (по модулю однократных ошибок):
globalIndex = page.getPageable().getOffset() localIndex
Где localIndex
находится индекс рассматриваемого элемента в page.getContent()
.