rak*_*pan 50 spring spring-data spring-data-jpa spring-data-rest
我有一个实体如下
Class Person{
String id;
String name;
String numberOfHands;
}
Run Code Online (Sandbox Code Playgroud)
使用Spring Data Rest(Gosling Release Train),我可以指定
localhost/Person?sort=name,asc
Run Code Online (Sandbox Code Playgroud)
用于排序名称升序.现在,在我需要按numberOfHands降序排序并命名升序的情况下.我可以指定
localhost/Person?sort=numberOfHands,name,asc
Run Code Online (Sandbox Code Playgroud)
但是,我无法指定
localhost/Person?sort=numberOfHands,desc,name,asc
Run Code Online (Sandbox Code Playgroud)
有没有办法指定多个排序顺序?
谢谢!
M. *_*num 80
想要对多个字段进行排序时,只需将sort参数多次放在URI中即可.例如your/uri?sort=name,asc&sort=numberOfHands,desc.然后Spring Data能够构造Pageable具有多种排序的对象.
关于如何为URI中的参数提交多个值,实际上没有定义标准.请参阅在GET请求中为相同参数名称传递多个值的正确方法.
但是,Java Servlet规范中有一些信息暗示了Java servlet容器如何解析请求参数.
该
getParameterValues方法返回一个String对象数组,其中包含与参数名称关联的所有参数值.... - Java Servlet规范,第3.1节
该部分中的示例进一步说明(尽管它混合了请求和正文数据)
例如,如果使用查询字符串
a=hello和帖子主体a=goodbye&a=world生成请求,则将对所得参数集进行排序a=hello, goodbye, world.
此示例显示,当a多次显示参数(在示例中)时,结果将聚合为a String[].
Pim*_*oek 19
以下是如何手动/以编程方式构造多排序对象.
Sort sort = Sort.by(
Sort.Order.asc("name"),
Sort.Order.desc("numberOfHands"));
return personRepository.findAll(sort);
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案并不直接解决原始问题,但可以帮助访问者在搜索解决方案时如何从后端角度/以某种"硬编码"方式对多个属性进行排序.(此解决方案不需要/接受任何URI参数)
| 归档时间: |
|
| 查看次数: |
44060 次 |
| 最近记录: |