강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

relate16님의 프로필 이미지
relate16

작성한 질문수

실전! 스프링 데이터 JPA

스프링 데이터 JPA 페이징과 정렬

쿼리 메소드 우선순위 질문

해결된 질문

작성

·

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

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. relate16님

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

감사합니다.

relate16님의 프로필 이미지
relate16
질문자

답변 감사합니다. :)

여러가지 찾아봤는데

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

 

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

답변보고,

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

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

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

 

감사합니다 ! 

 

 

 

relate16님의 프로필 이미지
relate16

작성한 질문수

질문하기