본문 바로가기
버그일기

[JPQL] For queries with named parameters you need to use provide names for method parameters.

by xunxou 2023. 1. 22.

조회수 컬럼 update 를 구현하던중 에러가 발생했습니다.

작성한 JPQL 구문은 아래와 같습니다.

@Modifying
@Query("UPDATE domain d SET d.viewCount = d.viewCount+1 WHERE d.id = :id")
int addViewCount(String id);

 

[에러메세지]

java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters.
Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.

번역기를 돌려 번역하면 에러메세지 내용은 다음과 같습니다.

명명된 매개 변수가 있는 쿼리의 경우 메서드 매개 변수에 이름을 제공해야 합니다.
쿼리 메서드 매개변수에 @Param을 사용하거나 Java 8+에서 javac 플래그 -parameters를 사용하는 경우 사용합니다.

 

[해결]

작성한 JPQL구문의 파라미터 부분에 Spring에서 제공하는 @Param을 붙여줍니다.

@Modifying
@Query("UPDATE domain d SET d.viewCount = d.viewCount+1 WHERE d.id = :id")
int addViewCount(@Param("id") String id); // 파라미터에 @Param("id") 구문 추가