(我用的是micronaut)我有一个学生名单,我想按名字排序。我使用pageable和sort作为查询参数
http://localhost:8080/admin/students?page=0&size=10&sort=name,asc&status=graduated
我得到这个结果:
萨曼莎
提姆
安东尼奥
大卫
索非亚
而不是:
安东尼奥
大卫
萨曼莎
索非亚
提姆
我尝试了使用sort.order的选项,基于
分页和排序存储库如何不区分大小写排序?
spring-data-jpa:不区分大小写的orderby
我从url中删除了排序,并尝试了sort.order是否有效
Sort.Order order = new Sort.Order("name",Sort.Order.Direction.ASC, true);
http://localhost:8080/admin/students?page=0&size=10&status=graduated
但它没有,它也没有做任何排序
步骤:
存储库,添加了sort.order
@Repository
public interface StudentRepository extends PageableRepository<Student, Long> {
Page<Student> findByGraduatedIsNull(Student.Status status, @Nullable Pageable p, Sort.Order sort);
}
服务
public Page<Student> getStudents(Student.Status status, Pageable pageable){
Sort.Order order = new Sort.Order("name",Sort.Order.Direction.ASC, true);
Page<Student> studentPage =
studentRepository.findByGraduatedIsNull(status, pageable, order);
return studentPage.map(s -> studentTransform.toDto(s));
}
有什么问题吗?
1条答案
按热度按时间icomxhvb1#
这个
Pageable
接口支持排序,所以不确定为什么要同时传递Pageable
以及Sort.Order
参数(我不知道是否支持)。如果url上没有定义排序,则getSort()
在Pageable
你应该回来UNSORTED
. 所以这可能会成为先例Sort.Order
.为什么不检查请求中是否传入了排序,如果没有,则将其默认为所需的排序,或者如果不允许传入排序,则直接重写它。