위의 keyword를 조합해서 만든다.
Ex. List<Post> findByTitleStartsWith(String title);
xml이나 자바파일에 JPQL 또는 native query를 정의해놓고, 쿼리를 정의할 때 사용한 name값을 가지고 사용하는 방법
엔티티에 @NamedQuery 애노테이션을 붙여줘야한다. name값을 설정해주고, JPQL을 사용해 쿼리를 적어준다.(@NamedNativeQuery()를 사용하면 native query를 적어주면 된다.)
repository에 선언해주면 된다. repository의 엔티티 뒤에 메서드명을 붙여서 찾아준다.
Ex. Post.findByTitle
위 방법(@NamedQuery)은 코드가 지저분해 질 수 있으므로, repository에 @Query 메서드를 사용하여 지정해주는 것이 더 깔끔하다.
nativeQuery를 쓰고 싶으면 @Query 내부에 nativeQuery = true
를 설정해주면된다.
Named Parameter를 사용할 수 도 있다.
SpEL을 사용하여 entity이름을 따로 적어주지 않을 수도 있다.
@Query를 사용했을 때, Sort를 하고 싶으면, Sort를 넘겨주면 된다.
이때 Sort(정렬 옵션)에 들어갈 수 있는 문자열은 반드시 property
거나 alias
여야 한다.
아래와 같이 title은 Post 엔티티의 property이므로 사용가능하다.
Ex. Sort.by(LENGTH(title)) 같은 함수는 사용할 수 없다.
만약 함수를 사용하고 싶을 때는 JpaSort를 사용하면 된다.