Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517

SpringRepository Pageable: нелогичное поведение

18.12.2014, 23:39. Показов 1057. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Похоже я упустил что-то важное когда читал как работать с Pageable. Проблема заключается в том что результаты поиска как-то странно коррелируют с разбивкой по страницам.
На примере:
сущность и репозиторий к ней:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Entity
@Table(name = "CUSTOMER", schema = "APP", catalog = "")
public class Customer {
 
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;
    ...
}
 
@Repository
public interface CustomerRepository extends CrudRepository<Customer, Long> {
    Page<Customer> findByLastName(String lastName, Pageable pageable);
    List<Customer> findByLastName(String lastName);
 
    List<Customer> findAll();
    Page<Customer> findAll(Pageable pageable);
}
Будем считать что в нашей таблице есть 6 записей с lastName = AAA и 5 записей с lastName = BBB и 4 с значением CCCC, итого = 15

Тестируем репозиторий:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Pageable firstPage = new PageRequest(1, 5);
Pageable secondPage = new PageRequest(3, 5);
Pageable thirdPage = new PageRequest(3,5);
repository.repository.findAll();// 15 записей, всё ок
repository.repository.findAll(firstPage);// свойства полученного объекта: total = 15, content size = 5. Всё ок, мы запросили первые 5 объектов
repository.repository.findAll(secondPage);// свойства полученного объекта: total = 15, content size = 5. Всё ок, мы запросили 5 записей следующей страницы
 
repository.findByLastName("AAA", firstPage);//total = 6 content size = 1 ... но почему 1 ? Я же хотел первые 5! Ок, может дело в номере страницы
repository.findByLastName("AAA", secondPage);;//total = 6 content size = 0 ... но где же результаты 
repository.findByLastName("AAA", thirdPage);;//total = 6 content size = 0 ... и здесь их нет
 
repository.findByLastName("AAA", new PageRequest(1,2));//total = 6, content size = 2 Странно
repository.findByLastName("AAA", new PageRequest(1,3));//total = 6, content size = 3 Кажется я начинаю понимать логику
repository.findByLastName("AAA", new PageRequest(1,4));//total = 6, content size = 2 А нет, нифига, не понимаю я логику
repository.findByLastName("AAA", new PageRequest(1,5));//total = 6, content size = 1
repository.findByLastName("AAA", new PageRequest(1,6));//total = 6, content size = 0
Я вижу по total что оно находит то что надо, но с самим pagin что-то явно не то, подскажите что я делаю не так, я просто хочу разбить результаты на кусочки, в случае с All это всё отлично работает.

Добавлено через 30 минут
А нет, с findAll я всё же переборщил что он ведёт себя вменяемо, там аналогичная ситуация:
Java
1
2
3
repository.findAll(new PageRequest(1,5, Sort.Direction.ASC, "firstName"));//total = 15, content size = 5
repository.findAll(new PageRequest(2,5, Sort.Direction.ASC, "firstName"));//total = 15, content size = 5
repository.findAll(new PageRequest(3,5, Sort.Direction.ASC, "firstName"));//total = 15, content size = 0 Кто украл третью страницу?
...
и вот здесь я догадался что секрет в нулевой странице. Ладно, Америка нашлась, она оказывается омывается Атлантическим океаном, а я её в Средиземном море искал, второй раз открывать не буду ... извините за беспокойство
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2014, 23:39
Ответы с готовыми решениями:

SpringRepository: переопределить datasource
Захотел таки добавить к серверной части spring, но что-то spring в плане конфигурации вообще ушёл в какие-то дали что я теперь не могу...

Объяснить нелогичное поведение Select Case
Здравствуйте! Select Case. Как он работает в студии. --------------------------------------- Объясните почему при значении str=100...

нелогичное начало
Добрый день, уважаемый Ott. Дино: olimex lpc1227 colinkex v1.1 установленный IAR и рабочие исходники дефолтной прошивы, все...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2014, 23:39
Помогаю со студенческими работами здесь

Нелогичное обновление данных в MS Access
Приветствую. Есть файл card.mdb, нужно работать с таблицей NumberDisk. Подключаюсь: Dim Con As New...

Непонятное поведение поведение TIM6 на STM32f4discovery
Вводные данные: SYSCLK=168Мгц; AHB Pressotir=1; APB1 Pressotir=4; TIM6_Pessotir=3; Т.о. частота тактирования на таймере=42Мгц ...

странное поведение
До определенного времени мой сайт получал с Яндекса почти 2к посетителей в сутки. Но в один прекрасный день Яндекс взял и удалил все...

Странное поведение First
Приветствую всех! Есть такая выборка из основной таблицы: SELECT Поставки.Код_товара, Поставки.Срок_поставки, Поставки.Стоимость_единицы ...

Странное поведение OS
Добрый день! Столкнулся с интересной проблемой. При нажатии на некоторые элементы разных меню, ожидаемое действие как бы начинает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru