인프런 커뮤니티 질문&답변
쿼리 메소드 우선순위 질문
해결된 질문
작성
·
384
0
@Query("select m from Member m where m.username = :username and m.age = :age")
List<Member> findQueryByUsernameAndAgeGreaterThan(
@Param("username") String username, @Param("age") int age);
일 때,
쿼리 메소드 이름 기능이 작동하지 않고
@Query 안에 정의한 JPQL이 작동하는데요,
그래서
쿼리 메소드 이름 기능이
처음에는 @Query가 들어가면 작동안하나 보나 했는데
@Query(value = "select m from Member m left join m.team t", countQuery = "select count(m) from Member m") Page<Member> findByAge(int age, Pageable pageable);
일 때는,
쿼리 메소드 이름 기능이 작동하는 것 같기도 해서
질문드립니다.
쿼리 메소드 이름 기능은 언제 실행되고
언제 실행이 안되는지 알고 싶습니다.
@Query("select m from Member m where m.username = :username and m.age = :age")처럼
@Query의 JPQL에 m.age = :age 처럼 파라미터가 있을 때
메서드 이름 기능이 무시되고 @Query 내용이 실행되는 건지
findQueryByUsernameAndAgeGreaterThan(@Param("username") String username, @Param("age") int age) 처럼
매개변수에 @Param이 있을 때
쿼리 메소드 이름 기능이 무시되고 실행되는 건지
아니면 Page 반환타입일 때만 @Query가 있어도
쿼리 메소드 이름 기능이 작동하는 건지
궁금합니다.
퀴즈
Spring Data JPA에서 리포지토리 메소드의 이름만으로 쿼리를 생성할 때, 조건을 정의하는 부분의 시작을 나타내는 키워드는 무엇일까요?
Find
Get
By
Where






답변 감사합니다. :)
여러가지 찾아봤는데
@Query가 있으면 메소드 이름 기능은 작동을 안하는 게 맞았네요 ㅠㅠ
문서도 찾아보고 해보다가 더 헷갈려서
답변보고,
혹시나 해서 강의를 다시 돌려봤더니
제가 강의에서 SQL을 잘못봤더라구요 :(
엉뚱한 곳에 몇 시간을 쏟은 건지..
감사합니다 !