본문 바로가기
Spring/Spring Data JPA

mybatis Cause: java.lang.IllegalArgumentException: argument type mismatch”

by 아이티.파머 2021. 4. 29.
반응형

mybatis Cause: java.lang.IllegalArgumentException: argument type mismatch”

Mybatis 에서 데이터 조회시 다음과 같은 오류가 날때는 Mybatis 특성에 대해 알고 있어야 대응이 가능 하다.

Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.cjenm.report.library.domain.entity.JobEntity with invalid types (Job) or values (16). 

Cause: java.lang.IllegalArgumentException: argument type mismatch

원인

잘되던 ResultType의 Object가 중간이 동작되지 않는다면 기본생성자가 변경되었거나 삭제되었는지 확인해보고 기본생성자를 생성해 주자.

해당 에러는 매핑 하는 과정에서 아규먼트가 맞지 않기 때문에 발생된 문제로 객체에 생성된 인자값과 MyBatis 에서 Reflection 으로 데이터를 매핑 하려는 인자의 값이 맞지 않을대 생성되는 에러다.

Mybatis는 기본생성자를 이용해 객체를 생성하고 리플렉션으로 데이터를 매핑한다. 기본생성자가 존재하지 않으면 ResultMap 에정의된 메서드 시그나처와 일치하는 생성자를 찾아 객체를 생성하게 되는데 이때 인자의 갯수값이 맞지 않거나 존재 하지 않으면 해당 에러가 발생된다.

해결 방법

  1. 기본생성자를 만들어준다.
  2. 객체와 sql 문의 alias를 맞춰 준다.
반응형