트러블슈팅
Parameter value [\] did not match expected type [java.lang.String (n/a)] 버그 일시적 해결 방법
기억용블로그
2022. 5. 24. 18:18
728x90
검색 결과에 따라서 리스트를 반환해주는 기능을 구현하다가 위와 같은 버그를 만났다.
맨 처음 결과값은 잘 나오는데 그 두번째부터 값이 출력되지 않고 저 버그만 출력됨
원인
https://stackoverflow.com/questions/71642208/parameter-value-gabrek-did-not-match-expected-type-java-lang-character-n-a
하이버네이트 구현체에 의한 버그로 5.6.6과 5.6.7 그 이상에서 발생하는 버그라고 한다.
원인은 캐싱에 의한 문제일거라 사람들은 예상하던데 본인의 하이버네이트 버전은 5.6.8로 아직 안 고쳐진걸로 보아 문제가 오래 갈 수도 있을 것같다
public interface ItemRepository extends JpaRepository<Item, Long> {
Optional<List<Item>> findByNameContaining(String name);
}
본인의 코드는 위와 같다.
@Repository
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
List<MyEntity> findByNameStartsWith(String namePrefix);
}
이는 똑같은 버그가 발생하는 다른 사람의 코드인데
LIKE 쿼리를 날리는 모든 경우에서 생기지 않을까 생각
해결 방법
public interface ItemRepository extends JpaRepository<Item, Long> {
Optional<List<Item>> findByNameContaining(@Param("q") String name);
}
일시적인 해결 방법은 매우 간단했다.
Controller에서 받을 파라미터를 문제가 생긴 메서드에 명시적으로 작성해넣으면 끝
만약 본인처럼 간단한 경우가 아니라면 5.6.5 이하로 내리면 해결된다고 한다.
출처
https://github.com/spring-projects/spring-data-jpa/issues/2472
https://github.com/spring-projects/spring-data-jpa/issues/2479