공통코드 Repository에서 Like 조건을 사용하면 아래와 같이 오류가 발생하였습니다.
CriteriaQuery with Like predicate fails when repeated with java.lang.IllegalArgumentException: Parameter value [] did not match expected type [java.lang.String (n/a)]
1. 오류원인
SpringBoot 버전 2.6.7 버전부터 Like 술어를 포함하는 CriteriaQuery 쿼리 구문 생성 시,
오류가 발생하는 것을 확인하였습니다.
https://hibernate.atlassian.net/browse/HHH-15142
샘플코드
//CriteriaQuery Error
//name%
List<CommonCode> findByCodeAndNameStartingWith(Long code, String name);
//%name
List<CommonCode> findByCodeAndNameEndWith(Long code, String name);
2. 해결책
2-1. @Query 어노테이션 사용
프로젝트 개발 일정에 맞추기 위해 해당 방법으로 대응하였습니다.
@Query("select s from CommonCode s" +
" where s.code = :code” +
" and s.name like :name%")
List<CommonCode> findByCodeAndName(@Param("code") Long code, @Param(“name”) String name);
2-2. 스프링부트 버전 업그레이드
스프링부트 2.6.9 버전부터 오류가 개선된 것을 확인하여 버전 업그레이드 건의하였습니다.
기존 프로젝트 호환성을 고려하여 업그레이드 검토할 예정입니다.
읽어주셔서 감사합니다.
반응형
최근댓글