JPA의 Repository를 사용하다보면 쿼리를 작성할 때 어노테이션 쿼리를 사용하기도 하고 네임쿼리를 사용하기도 한다.
그런데 이때 변수를 전달해서 동적인 쿼리를 작성하곤 하는데 제목과 같이 not found in annotated query. 라는 오류를 뱉을 때가 있다.
이 경우 아주 간단한 문제이므로 잘 확인 해보길 바란다.
예를 들어, 생성일자를 변수로 쿼리에 전달한다고 할 때 다음과 같은 쿼리가 있다고 치자.
... and a.createdDateTime <: dateFrom and a.status = :status...
혹시 이상한 점을 찾았는가?
빌드를 하려는데 자꾸 제목과 같은 오류가 났다.
but parameter 'Optional[dateFrom]' not found in annotated query.
아니! (한국인 특. 아니로 시작함)
분명 dateFrom 있잖아! 왜 못찾는건데?
알고보니 바보였다.
Annotated Query 어노테이션 쿼리에서는 변수를 전달할 때
: 다음에 변수를 붙여서 써야 한다.
:dateFrom
:status
그런데 나는 : 뒤에 공백이 있었고 이 때문에 dateFrom 변수를 인식하지 못한 것이었다.
... a.createdDateTime < :dateFrom and status = :status...
로 수정 했더니 해결 되었다!
반응형
'백엔드 > Spring' 카테고리의 다른 글
@Transacntional 의 옵션들 (0) | 2025.04.01 |
---|---|
Batch Insert를 통한 속도 개선기 (2) | 2025.01.08 |
JpaRepository save와 saveAll의 차이 그리고 Batch Insert (0) | 2025.01.05 |
[JPA] queryDsl cannot find symbol Q class 오류 (0) | 2023.05.11 |