본문 바로가기
👋국비 후기 모음👋 (이력도 확인 가능!)
개발/자바

[JPA] sort 각기 다른 order주기

by 킴뎁 2021. 10. 31.
728x90
반응형

실무를 하다가 컬럼에 sort를 해야 했는데 궁금점이 생겨서 찾아보고 정리해본다.

id		time
1		0700
2		0700
3		0730
4		0730
5		0800
6		0800
7		0900
8		0900
9		1000
10		1000

이런식의 데이터가 있다고 가정해보자.

 

단일 sort

Sort sort = new Sort(Sort.Direction.ASC, "id")

return jpaRepository.findAll(sort);

 

다중 sort (id정렬 후 time정렬)

Sort sort = new Sort(Sort.Direction.ASC, "id", "time")

return jpaRepository.findAll(sort);

 

내가 실무 때 필요했던 sort는 위에 있는 다중 sort에 동일한 order였다.

그러다 문득 다중 sort인데 다른 order를 주려면 어떻게 해야할까 궁금증이 생겨서 찾아보았고 stackoverflow에서 답을 구했다.

 

time 내림차순  -> 그 다음 id는 오름차순

Sort sort = Sort.by(
      Sort.Order.desc("time"),
      Sort.Order.asc("id")
    );
    
return jpaRepository.findAll(sort);

결과

id		time
9		1000
10		1000
7		0900
8		0900
5		0800
6		0800
3		0730
4		0730
1		0700
2		0700

이렇게 Sort.Order를 사용해서 해결할 수 있다.

반응형
👋국비 후기 모음👋 (이력도 확인 가능!)

댓글