스프링 데이터(JPA)에서 파생된 쿼리에서 여러 속성을 기준으로 정렬하려면 어떻게 해야 합니까?
이 페이지(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.statorys)의 메서드 명명 예시를 보고 있는데 다음과 같은 복잡한 체인 메서드 이름을 만들 수 있습니까?
findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc
이 예에서는 1개의 값에 대해서만 OrderBy를 실행하고 있습니다.위의 예에서는ProgDate
그리고.StartTime
두 개의 개별 값이 됩니다.
요령은 direction 키워드를 사용하여 정렬할 속성을 구분하는 것입니다.Asc
그리고.Desc
따라서 쿼리 방법에서 원하는 것은 다음과 같습니다.
…OrderByProgDateAscStartTimeAsc
주의: 첫 번째 속성 정의의 결론은 다음과 같습니다.Asc
그리고 다음 소유지로 계속 가겠죠.
일반적으로는, 로의 전환을 추천합니다.@Query
메서드 이름이 특정 길이 또는 복잡성을 초과하면 기본 쿼리.가장 큰 이유는 고객이 이러한 매우 긴 방법을 부르는 것이 어색하기 때문입니다.와 함께@Query
오히려 쿼리 언어의 모든 기능과 쿼리 의도를 표현하기 위해 상위 수준의 언어를 사용할 수 있는 적절한 크기의 메서드 이름을 얻을 수 있습니다.
여러 열에 의해 정렬 작업을 수행하는 get 작업을 구현하기 위한 다른 접근 코드 스니펫을 공유합니다.
List<Order> orders = new ArrayList<Order>();
Order StartTimeOrder = new Order(Sort.Direction.DESC, "StartTime");
orders.add(StartTimeOrder);
Order progDateOrder = new Order(Sort.Direction.ASC, "ProgDate");
orders.add(progDateOrder);
return repository.findAll(Sort.by(orders));
네, 가능합니다.
이것을 시험해 보세요.
findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc(String programme, String director, Date progStart, Date progEnd);
코드를 테스트해 본 적은 없지만, 이미 실행한 것으로 보아 동작하고 있을 것입니다.
조금 더 콤팩트하게:
return repository.findAll(
Sort.by(List.of(
new Order(Sort.Direction.DESC, "StartTime"),
new Order(Sort.Direction.ASC, "ProgDate")
))
);
또는
return repository.findAll(
Sort
.by(Direction.DESC, "StartTime")
.and(Sort.by(Sort.Direction.ASC, "ProgDate"))
);
언급URL : https://stackoverflow.com/questions/25380984/how-to-sort-by-multiple-properties-in-spring-data-jpa-derived-queries
'prosource' 카테고리의 다른 글
BEGIN_OBJECT를 개조해야 하지만 BEGIN_ARRAY였습니다. (0) | 2023.03.19 |
---|---|
Redx에서 직접 "store.dispatch"가 아닌 "this.props.dispatch"를 사용하는 이유는 무엇입니까? (0) | 2023.03.19 |
MongoDB: initAndListen 예외: 20 읽기 전용 디렉터리에 잠금 파일 생성 시도: /data/db, 종료 (0) | 2023.03.19 |
Wordpress 테마에서 이미지 URL을 가져오려면 어떻게 해야 합니까? (0) | 2023.03.19 |
WordPress의 상대 URL (0) | 2023.03.19 |