• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

@Param 생략

21.12.13 10:05 작성 조회수 2.33k

0

@EntityGraph(attributePaths = {"team"})
List<Member> findEgByUsername( String username);

일 때와,

@EntityGraph(attributePaths = {"team"})
List<Member> findEgByUsername(@Param("username") String username);

일 때 결과 값이 똑같이 나오는걸 확인했는데,

@Param은 직접 JPQL에 "~~ = :username"을 지정하지 않는 이상, 쿼리 메소드 이름 기능으로 사용할 때,

생략해도 되고 생략 안해도 되는 게 맞나 확인차 질문드립니다.

 

 

 

 

 

답변 1

답변을 작성해보세요.

3

OMG님의 프로필

OMG

2021.12.14

안녕하세요. 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 할 수 있어 찾아보니 영한님이 말씀하신 부분이 에러메시지로 출력되고,

 

관련된 내용을 분석한 블로그 글 링크도 보시면 도움되리라 생각하여 첨부합니다 ^^

JPQL @Query 에러: For queries with named parameters you need to use provide names for method parameters (tistory.com)

 

참고)

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.named-parameters


감사합니다.

relate16님의 프로필

relate16

질문자

2021.12.14

으업  이렇게 자세히 답변해주시다니ㅠㅠㅠ

명확히 알 수 있게 되었습니다 . 감사합니다 :)