공통코드 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 버전부터 오류가 개선된 것을 확인하여 버전 업그레이드 건의하였습니다.

기존 프로젝트 호환성을 고려하여 업그레이드 검토할 예정입니다.

 

읽어주셔서 감사합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기