티스토리 뷰


org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class nsp.intern.study.mybatis.domain.Product with invalid types (…) or values (…). Cause: java.lang.IllegalArgumentException: argument type mismatch

에러난 원인

에러의 원인은IllegalArgumentException: argument type mismatch 말그대로 MyBatis로 DB에 접근해서 객체로 리턴 받으려는 경우에 이와 같은 에러가 발생했다면 매핑을 시도하려는 클래스에 기본 생성자가 선언이 되어 있는지 않아 발생한 오류이다.

제가 오류를 낸 이유는 롬복 bulider를 잘못 사용하여 기본생성자를 생성하지못하여 원인으로 발생하였다.

 

 

또한 ResultMap을 이용하게 되었을 때, 선언된 생성자의 메서드 시그니처 타입과 파라미터 타입이 일치하지 않는다면 해당 에러가 발생하게 된다고 한다.

 

해결방법

1. 기본 생성자를 이용해 객체를 생성하고, 리플렉션으로 필드를 주입한다. 그러므로 기본생성자를 생성해야한다. 

2. ResultMap을 이용했을 때는 의된 메서드 시그니처와 일치하게 하는것이다.

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
글 보관함