Java 按枚举分页和排序
我的服务返回一页元素,我希望能够按许多字段对其进行排序。 到目前为止,我可以按除此枚举字段以外的所有字段对其进行排序:Java 按枚举分页和排序,java,spring-boot,sorting,enumeration,pageable,Java,Spring Boot,Sorting,Enumeration,Pageable,我的服务返回一页元素,我希望能够按许多字段对其进行排序。 到目前为止,我可以按除此枚举字段以外的所有字段对其进行排序: enum ActionStatusEnum { TO_DO("ToDo"), ROUGH_DRAFT("Brouillon"), WAITING_FOR_VALIDATION("En attente de validation"), VALIDATED("Validée"), ...... private String labe
enum ActionStatusEnum {
TO_DO("ToDo"),
ROUGH_DRAFT("Brouillon"),
WAITING_FOR_VALIDATION("En attente de validation"),
VALIDATED("Validée"),
......
private String label;
ActionStatusEnum(String value) {
label = value;
}
public String getLabel() {
return label;
}
到目前为止,我的排序是这样的(状态是枚举字段)
正如您所期望的,每当我按状态排序时,它都会按字母顺序排序;而我需要按照枚举中声明的顺序对其进行排序(要做,然后粗略起草,然后等待验证…)。
有什么解决办法吗,比如定制枚举排序之类的。提前感谢您从哪里读取值?数据库、文件或任何其他类型的内存?也许除了排序之外,你还可以想到已经排序的接收值?@Hayra from DB,但我不能只获取预先排序的值,因为用户可以选择使用哪种排序及其使用顺序,就像他可以选择按日期排序然后按状态排序一样。。。
for (String sort : sorts) {
switch(sort) {
case "createDate":
s = new Sort(Sort.Direction.DESC, "creationDate");
mySort = mySort == null ? s : mySort.and(s);
break;
case "rubric":
s = new Sort(Sort.Direction.ASC, "task.rubric");
mySort = mySort == null ? s : mySort.and(s);
break;
........ // other cases
case "status":
s = new Sort(Sort.Direction.DESC, "status");
break;
default :
s = new Sort(Sort.Direction.DESC, "submissionDate");
mySort = mySort == null ? s : mySort.and(s);
break;
}
}