Spring数据按一个属性对页面进行排序,该属性先前被另一个属性排序

时间:2019-02-21 20:10:14

标签: java sorting pagination spring-data-jpa

假设我有一个表职员(其id和name列如下):

| PurchaseID    | PersonID  |
|------------   |---------- |
| 1             | TeamA     |
| 1             | PersonA   |
| 1             | PersonC   |

我想创建一个例如大小为3的页面,并且我需要首先按|---------------------|------------------| | id | name | |---------------------|------------------| | 12 | adrian | |---------------------|------------------| | 5 | anne | |---------------------|------------------| | 9 | bryce | |---------------------|------------------| | 10 | burns | |---------------------|------------------| | 1 | charles | |---------------------|------------------| | 2 | clyde | |---------------------|------------------| 然后按id对结果页面进行排序。

关键是,如果我使用下一个查询:

name

不是通过id重新排序页面结果,只是保持名称顺序。

我尝试过,首先使用spring数据(OrderByName)和按页面请求进行排序:

employeeRepository.findAll(PageRequest.of(0, 3, Sort.by("name").ascending().and(Sort.by("id").ascending()))

但是我总是得到下一个结果:

第1页

employeeRepository.findAllByOrderByName(PageRequest.of(page, size, Sort.by("id").ascending()));

第2页

|---------------------|------------------|
|         id          |       name       |
|---------------------|------------------|
|          12         |      adrian      |
|---------------------|------------------|
|          5          |       anne       |
|---------------------|------------------|
|          9          |       bryce      |
|---------------------|------------------|

但是我需要的结果是:

第1页

|---------------------|------------------|
|         id          |       name       |
|---------------------|------------------|
|          10         |       burns      |
|---------------------|------------------|
|          1          |      charles     |
|---------------------|------------------|
|          2          |       clyde      |
|---------------------|------------------|

第2页

|---------------------|------------------|
|         id          |       name       |
|---------------------|------------------|
|          5          |      anne        |
|---------------------|------------------|
|          9          |       bryce      |
|---------------------|------------------|
|          12         |      adrian      |
|---------------------|------------------|

请注意,每个页面均按ID重新排序,但按名称保留第一顺序。

有没有一种方法可以只使用Page and Sort或Page结果的后处理?

有什么主意吗?

0 个答案:

没有答案