Published 2023. 4. 27. 20:45
728x90
반응형
Reason: Validation failed for query for method public abstract 오류
jpql 쿼리 작성 중 만난 에러
@Query(value = "select new com.test.dto.OrderDto(u.name) " +
"from Order o " +
"join User u on u.userSeq = o.userSeq " +
"where 1=1 " +
"and (:userSeq = null or :userSeq = '' or o.userSeq = %:request.userSeq%")
List<OrderDto> getOrderList(Long userSeq);
원인
안정적이지 않은 쿼리여서 발생
살펴보니 like 검색시 % 넣어준걸 복사해서 사용하다 보니 = 검색인데 %이 남아있어서 발생한 에러였음
해결 방법
1. 쿼리 자세히 살펴보고 쿼리문 잘못 적은 부분 없는지 확인하기
예시
@Query(value = "select new com.test.dto.OrderDto(u.name) " +
"from Order o " +
"join User u on u.userSeq = o.userSeq " +
"where 1=1 " +
"and (:userSeq = null or :userSeq = '' or o.userSeq = :request.userSeq")
List<OrderDto> getOrderList(Long userSeq);
2. 혹은 select 절을 dto로 받지 않는다면 nativeQuery = true 조건을 추가해 볼 것
예시
@Query(value = "select new com.test.dto.OrderDto(u.name) " +
"from Order o " +
"join User u on u.userSeq = o.userSeq " +
"where 1=1 " +
"and (:userSeq = null or :userSeq = '' or o.userSeq = :request.userSeq", nativeQuery=true)
List<OrderDto> getOrderList(Long userSeq);
반응형
'프로그래밍 > JPA' 카테고리의 다른 글
[JPA] jpql limit 사용하기 (0) | 2023.05.17 |
---|---|
[JPA] Dirty Checking not working (0) | 2023.05.08 |
[JPA] JPQL alias error 해결 방법 (0) | 2023.04.20 |
[JPA] JPQL 날짜 조회 시 원치않는 타임존이 붙는다면? (0) | 2023.04.19 |
[JPA] JPA setter 사용하지 않는 이유 (0) | 2023.04.14 |