Допустим, у меня есть сотрудник таблицы (со столбцами идентификатора и имени следующим образом):
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 12 | adrian |
|---------------------|------------------|
| 5 | anne |
|---------------------|------------------|
| 9 | bryce |
|---------------------|------------------|
| 10 | burns |
|---------------------|------------------|
| 1 | charles |
|---------------------|------------------|
| 2 | clyde |
|---------------------|------------------|
Я хочу создать страницу, например, с размером 3, и мне нужна страница результатовбудет заказан сначала по id
, а затем по name
.
Суть в том, что если я использую следующий запрос:
employeeRepository.findAll(PageRequest.of(0, 3, Sort.by("name").ascending().and(Sort.by("id").ascending()))
Не переупорядочивает результат страницы поid просто сохраняет порядок имен.
Я пробовал с этим, сначала упорядочивая данные пружин (OrderByName) и запрос страницы:
employeeRepository.findAllByOrderByName(PageRequest.of(page, size, Sort.by("id").ascending()));
Но я всегда получаю следующий результат:
Страница 1
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 12 | adrian |
|---------------------|------------------|
| 5 | anne |
|---------------------|------------------|
| 9 | bryce |
|---------------------|------------------|
Страница 2
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 10 | burns |
|---------------------|------------------|
| 1 | charles |
|---------------------|------------------|
| 2 | clyde |
|---------------------|------------------|
Но мне нужен следующий результат:
Страница 1
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 5 | anne |
|---------------------|------------------|
| 9 | bryce |
|---------------------|------------------|
| 12 | adrian |
|---------------------|------------------|
Page 2
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | charles |
|---------------------|------------------|
| 2 | clyde |
|---------------------|------------------|
| 10 | burns |
|---------------------|------------------|
Обратите внимание, что каждая страница переупорядочена по id, но сохраняется первый порядок по имени.
Есть ли способ сделать это, просто используя Page и Sort илинеобходим пост-процесс результата страницы?
Есть идеи?