假设我有一个表职员(其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结果的后处理?
有什么主意吗?