해결된 질문
작성
·
3K
0
@EntityGraph(attributePaths = {"team"})
List<Member> findEgByUsername( String username);
일 때와,
@EntityGraph(attributePaths = {"team"})
List<Member> findEgByUsername(@Param("username") String username);
일 때 결과 값이 똑같이 나오는걸 확인했는데,
@Param은 직접 JPQL에 "~~ = :username"을 지정하지 않는 이상, 쿼리 메소드 이름 기능으로 사용할 때,
생략해도 되고 생략 안해도 되는 게 맞나 확인차 질문드립니다.
답변 1
3
안녕하세요. relate16님, 공식 서포터즈 OMG입니다.
@Param 어노테이션은 @Query의 jpql에서 이름 기반으로 바인딩 할 때 사용하는 것은 아실꺼에요,
올려주신 코드에서는 @Param 유무 영향은 없을 것 같네요.
해당 내용은 공식문서에도 나와있는데요, @Param 아랫줄 보시면 "bind the name in in the query"라고 명시되어 있는 것 확인하실 수 있습니다.
추가로 @Param을 사용한 예시를 찾아보니 공식 문서에서 @Procedure에서도 @Param을 사용하는데 이 부분은 제 예상이지만 프로시저의 쿼리에서 사용하기 위해 지원하지 않나 싶네요.
영한님의 답변도 찾아보았는데요,
https://www.inflearn.com/questions/24879
@Query 사용시 @Param의 필수 지정과 관련된 질문으로 영한님의 답변에서 "-parameters 옵션"의 키워드를 catch 할 수 있어 찾아보니 영한님이 말씀하신 부분이 에러메시지로 출력되고,
관련된 내용을 분석한 블로그 글 링크도 보시면 도움되리라 생각하여 첨부합니다 ^^
참고)
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.named-parameters
감사합니다.
으업 이렇게 자세히 답변해주시다니ㅠㅠㅠ
명확히 알 수 있게 되었습니다 . 감사합니다 :)