복붙노트

[SPRING] Spring 데이터 나머지 - 여러 속성별로 정렬

SPRING

Spring 데이터 나머지 - 여러 속성별로 정렬

아래 엔티티가 있습니다.

Class Person{
String id;
String name;
String numberOfHands;
}

스프링 데이터 레스트 (Gosling Release Train)를 사용하면

localhost/Person?sort=name,asc

name name 오름차순 정렬. 자, numberOfHands가 오름차순으로 내림차순으로 정렬해야하는 경우. 지정할 수 있습니다.

localhost/Person?sort=numberOfHands,name,asc

그러나 나는 지정할 수 없다.

localhost/Person?sort=numberOfHands,desc,name,asc

여러 정렬 순서를 지정하는 방법이 있습니까?

감사!

해결법

  1. ==============================

    1.여러 필드를 정렬하려면 URI에 정렬 매개 변수를 여러 번 넣기 만하면됩니다. 예를 들어 / uri? sort = name, asc & sort = numberOfHands, desc. Spring Data는 여러 종류의 Pageable 객체를 생성 할 수 있습니다.

    여러 필드를 정렬하려면 URI에 정렬 매개 변수를 여러 번 넣기 만하면됩니다. 예를 들어 / uri? sort = name, asc & sort = numberOfHands, desc. Spring Data는 여러 종류의 Pageable 객체를 생성 할 수 있습니다.

    URI의 매개 변수에 대해 여러 값을 제출하는 방법에 대해서는 실제로 정의 된 표준이 없습니다. GET 요청에서 동일한 매개 변수 이름에 대해 여러 값을 전달하는 올바른 방법을 참조하십시오.

    그러나 자바 서블릿 컨테이너에는 요청 매개 변수를 구문 분석하는 방법을 알려주는 정보가 Java Servlet Spec에 있습니다.

    이 섹션의 샘플은 상태 (요청 및 본문 데이터가 혼합되어 있음에도 불구하고)

    이 샘플은 매개 변수 (예에서 a)가 여러 번 표시 될 때 결과가 String []으로 집계된다는 것을 보여줍니다.

  2. ==============================

    2.다음은 다중 Sort 객체를 수동 / 프로그램 방식으로 생성하는 방법입니다.

    다음은 다중 Sort 객체를 수동 / 프로그램 방식으로 생성하는 방법입니다.

    Sort sort = Sort.by(
        Sort.Order.asc("name"),
        Sort.Order.desc("numberOfHands"));
    return personRepository.findAll(sort);
    

    참고 :이 솔루션은 묻는 원래 질문을 직접 해결하지는 않지만, 백엔드 관점에서 / 다소 "하드 코딩 된"방식으로 여러 속성을 정렬하는 방법을 검색하는 동안이 질문에 착수 한 방문자를 도울 수 있습니다. (이 솔루션은 URI 매개 변수를 필요로하지 않으며 취하지 않습니다)

  3. from https://stackoverflow.com/questions/33018127/spring-data-rest-sort-by-multiple-properties by cc-by-sa and MIT license