컬럼값으로 정렬하기
sort class사용
Sort sort1 = Sort.by("name").descending(); // 내림차순
Sort sort2 = Sort.by("password").ascending(); // 오름차순
Sort sortAll = sort1.and(sort2); // 2개이상 다중정렬도 가능하다
Pageable pageable = PageRequest.of(0, 10, sortAll); // pageable 생성시 추가
컬럼이 아닌 값으로 정렬
// 아래와 같이 AS user_password 로 Alias(AS) 를 걸어주면
@Query("SELECT u, u.password AS user_password FROM user u WHERE u.username = ?1")
List<User> findByUsername(String username, Sort sort);
// 이렇게 해당 user_password 를 기준으로 정렬할 수 있다.
List<User> users = findByUsername("user", Sort.by("user_password"));
SQL 함수를 사용해서 정렬하기
// 아래와 같이 일반적인 쿼리에서
List<User> findByUsername(String username, Sort sort);
// 이렇게 쿼리함수 LENGTH() 조건을 걸어서 password 문자길이 기준으로 정렬할 수 있다.
List<User> users = findByUsername("user", JpaSort.unsafe("LENGTH(password)"));
'Java > Spring Jpa' 카테고리의 다른 글
QueryDSL (0) | 2023.02.02 |
---|---|
원하는 값만 쿼리로 가져오기 (0) | 2023.02.02 |
delete() 메서드 최적화 (0) | 2023.02.02 |
Repository 기능 제한 (0) | 2023.02.02 |
Cascade와 orphanRemoval (0) | 2023.02.02 |