Backend
home
🚨

For queries with named parameters 에러

생성 일시
2025/01/22 06:16
태그
SpringBoot
게시일
2025/01/22
최종 편집 일시
2025/02/09 13:26
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
복사