Result Maps collection does not contain value for Error

EUNJI LEE·2023년 7월 30일
0

MyBatis

목록 보기
6/6

⚠️java.lang.IllegalArgumentException: Result Maps collection does not contain value for …

프로젝트 진행 도중 위와 같은 에러가 발생했다.

스프링 동작 시에는 에러 없이 서버가 올라가다가 작업 중인 페이지를 불러오려고 MyBatis가 실행되면서 DB에 접근하려고 하니까 에러가 발생했다.

mapper에서 resultMap이 알맞게 매핑 되지 않았을 때 발생하는 에러라서 내가 작성 중인 mapper만 확인했는데 매핑은 다 알맞게 되어있어서 인터넷에 검색해봐도 매핑 문제가 맞았다.

에러 메시지를 다시 보니까 내가 작업 중인 게 아닌 다른 객체 경로가 떠서 다른 mapper 파일을 뒤적거리다 보니 원인을 찾았다.

<!-- 에러 발생시킨 부분 -->
<select id="selectAllBooking" resultMap="com.workit.booking.model.dto.Booking">
		SELECT * FROM BOOKING ORDER BY BOOKING_DATE DESC
</select>
<!-- 반환 타입 수정한 부분 -->
<select id="selectAllBooking" resultType="com.workit.booking.model.dto.Booking">
		SELECT * FROM BOOKING ORDER BY BOOKING_DATE DESC
</select>

해당 com.workit.booking.model.dto.Booking는 resultType 속성으로 작성해줘야 하는데 resultMap으로 작성되어있어서 문제가 발생한 거였다.

그 외에도 MyBatis config.xml 파일에 mapper가 정의되어 있지 않거나 스펠링이 틀린 경우, Mapper에 정의된 namespace 명칭이 Application내에 중복될 경우 등 매칭을 제대로 시켜주지 않은 경우에 발생할 수 있으니 프로그램이 알아서 동작할 수 있도록 제대로 매핑시켜줬는지 잘 확인해줘야 한다.

profile
천천히 기록해보는 비비로그

0개의 댓글