Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- @Profile
- 외부설정
- cors
- OAuth2
- 리소스핸들러
- 브루트포스
- 리소스 서버
- AuthenticationPrincipal
- 백트래킹
- 백준
- HATEOAS
- Spring Security
- webjar
- 백기선
- JsonSerializer
- 스프링 부트
- WebApplication Type
- Application Runner
- @ConfigurationProperties
- Application Event
- 정적 리소스
- 알고리즘
- EnableAutoConfiguration
- 다익스트라
- Application Argument
- application.properties
- rest api
- JPA
- 스프링부트
- HttpMessageConverters
Archives
- Today
- Total
아카이브
[스프링 데이터 JPA] 스프링 데이터 JPA 3. 쿼리 메서드 본문
이전과 마찬가지로 Pageable이나 Sort를 매개변수로 사용할 수 있는데, @Query와 같이 사용할 때 제약 사항이 하나 있습니다.
Order by 절에서 함수를 호출하는 경우에는 Sort를 사용하지 못합니다. 그 경우에는 JpaSort.unsafe()를 사용해야 합니다.
- Sort는 그 안에서 사용한 프로퍼티 또는 alias 가 엔티티에 없는 경우에는 예외가 발생합니다.
- JpaSort.unsafe()를 사용하면 함수 호출을 할 수 있습니다.
PostRepository
/**
* Alias 줄 수 있음
*
* @Query("SELECT p, p.title AS pTitle FROM Post AS p WHERE p.title = ?1")
*/
@Query("SELECT p FROM Post AS p WHERE p.title = ?1")
List<Post> findByTitle(String title, Sort sort);
테스트 코드
@Test
@DisplayName("@Query Sort 테스트")
public void findByTitleQuerySort() {
savePost();
List<Post> byTitle = postRepository.findByTitle("Spring Data Jpa", Sort.by("title")); // property, alias 아니라면 error
assertThat(byTitle.size()).isEqualTo(1);
}
@Test
@DisplayName("@Query Sort Jpa.unsafe() 테스트")
public void findByTitleQuerySortJpaUnsafe() {
savePost();
List<Post> byTitle = postRepository.findByTitle("Spring Data Jpa", JpaSort.unsafe("LENGTH(title)"));
assertThat(byTitle.size()).isEqualTo(1);
}
'Spring > 스프링 데이터 JPA' 카테고리의 다른 글
[스프링 데이터 JPA] 스프링 데이터 JPA 6. Update 쿼리 (0) | 2021.01.16 |
---|---|
[스프링 데이터 JPA] 스프링 데이터 JPA 5. 쿼리 메서드 Named Parameter과 SpEL (0) | 2021.01.16 |
[스프링 데이터 JPA] 스프링 데이터 JPA 3. 쿼리 메서드 (0) | 2021.01.16 |
[스프링 데이터 JPA] 스프링 데이터 JPA 2. Entity.save() (0) | 2021.01.16 |
[스프링 데이터 JPA] 스프링 데이터 JPA 1. JPA Repository (0) | 2021.01.16 |