• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

쿼리 메소드 우선순위 질문

21.12.12 15:29 작성 조회수 290

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가 있어도

쿼리 메소드 이름 기능이 작동하는 건지

궁금합니다.

 

 

 

답변 1

답변을 작성해보세요.

1

안녕하세요. relate16님

@Query가 있으면 @Query가 우선순위를 가집니다.

감사합니다.

relate16님의 프로필

relate16

질문자

2021.12.15

답변 감사합니다. :)

여러가지 찾아봤는데

@Query가 있으면 메소드 이름 기능은 작동을 안하는 게 맞았네요 ㅠㅠ

 

문서도 찾아보고 해보다가 더 헷갈려서

답변보고,

혹시나 해서 강의를 다시 돌려봤더니

제가 강의에서 SQL을 잘못봤더라구요 :(

엉뚱한 곳에 몇 시간을 쏟은 건지..

 

감사합니다 !