Повторяющиеся результаты при сортировке с использованием объекта подкачки Spring-Data в репозитории JPA - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть rest-api, который возвращает список пользователей при вызове.API использует org.springframework.data.domain.Pageable для разбивки на страницы и сортировки результатов.Это работает, просто передавая pageable в репозиторий JPA, который затем возвращает нужную страницу.

По какой-то причине при сортировке по имени может появиться повторяющаяся запись, но только если несколько записей имеют одинаковое имя.Однако этого никогда не происходит при сортировке по lastName.Оба являются просто строками в сущности, кроме имени свойства заметной разницы нет.

Кто-нибудь из вас когда-либо сталкивался с этим, и если да, то как вы это исправили?

РЕДАКТИРОВАТЬ:поясните, что в принципе нет никакой логики между контроллером и хранилищем.Я просто пропускаю страницу и возвращаю результаты.

РЕДАКТИРОВАТЬ 2: Решено!Интересный заголовок: причина, по которой проблема возникала только при сортировке по имени, заключалась в том, что на страницах 1 и 2 всегда были только записи, независимо от того, каким образом были отсортированы записи.Мне повезло, что наши тестеры использовали эти конкретные данные испытаний, или я, возможно, никогда не заметил.

1 Ответ

0 голосов
/ 22 ноября 2018

Да, я видел это: запись может появиться, скажем, на странице 1, а затем снова на странице 2.

Это проблема на уровне базы данных.Например, 10 элементов на странице и элементы в позициях 10 и 11 имеют одинаковое значение для свойства, тогда может быть случайным, какой из них появится в какой позиции в каждом наборе результатов.

Поэтому примените вторичную сортировку к уникальному свойству- например, идентификатор базы данных - для обеспечения согласованного порядка запросов.

...