Spring Data JPA возвращает пустые страницы

#java #spring-boot #spring-data-jpa

Вопрос:

Я новичок в Spring JPA. Я использую Spring JPA для доступа к базе данных в проекте Spring Boot, но у меня проблема.

Я использую запросы с возможностью просмотра страниц через JpaRepository. Я создал метод для включения запросов на просмотр страниц в репозитории:

     @Query("select d from Document d where d.type=:type")
    Page<Document> findByType(String type, Pageable pageable);
 

Я вызываю метод и обрабатываю данные в цикле. Когда данные на странице обработаны, я проверяю, есть ли еще страницы с данными для обработки, получая новую страницу со страницы, например:

 Pageable pageable = PageRequest.of(0, 1000, Sort.by("name"));

while (pageable != null) {
    Page<Dokument> xmlDocuments = documentRepository.findByType("XML", pageable);
    
    //process data

    if (xmlDocuments.hasNext()) {
        pageable = xmlDocuments.nextPageable();
    } else {
        pageable = null;
    }
}
 

Проблема в том, что, хотя на странице указано, что всего 100 страниц содержат данные, только 50 из них на самом деле содержат данные. Остальные 50 пусты. И после обработки всех 100 страниц я вижу, что обработано только 50% записей в базе данных.

Я не смог найти проблему, и я надеялся, что кто-нибудь здесь сможет это сделать.

Комментарии:

1. Вы обрабатываете вещи, которые изменяют состояние, изменение состояния изменяет результаты запроса. Таким образом, вы, вероятно, меняете столбцы, которые также являются частью where части запроса. Поэтому каждый раз пропускайте страницу.

2. В этом-то и была проблема. Большое вам спасибо за вашу помощь.