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