java.lang.IllegalStateException: For queries with named parameters you need to provide names method parameters. Use query method parameters, or when on Java 8+ use the javac flag -parameters.
at org.springframework.data.jdbc.repository.query.StringBasedJdbcQuery.lambda$convertAndAddParameter$(StringBasedJdbcQuery.java:) ~[spring-data-jdbc-.jar:]
at java.base/java.util.Optional.orElseThrow(Optional.java:) ~[na:na]
at org.springframework.data.jdbc.repository.query.StringBasedJdbcQuery.convertAndAddParameter(StringBasedJdbcQuery.java:) ~[spring-data-jdbc-.jar:]
at org.springframework.data.jdbc.repository.query.StringBasedJdbcQuery.bindParameters(StringBasedJdbcQuery.java:) ~[spring-data-jdbc-.jar:]
at org.springframework.data.jdbc.repository.query.StringBasedJdbcQuery.execute(StringBasedJdbcQuery.java:) ~[spring-data-jdbc-.jar:]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:) ~[spring-data-commons-.jar:]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:) ~[spring-data-commons-.jar:]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:) ~[spring-data-commons-.jar:]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:) ~[spring-data-commons-.jar:]
<...>
Java
복사
다음과 같은 에러가 발생할 경우 @Param 어노테이션을 활용하여 해당 문제를 해결할 수 있다.
•
AS-IS
@Query("SELECT * FROM COFFEE WHERE COFFEE_ID = :coffeeId")
Optional<Coffee> findByCoffee(Long coffeeID);
Java
복사
•
TO-BE
@Query("SELECT * FROM COFFEE WHERE COFFEE_ID = :coffeeId")
Optional<Coffee> findByCoffee(@Param("coffeeId") Long coffeeID);
Java
복사