I'm YOUNG


Spring 2.5 + iBatis 작업 중
select 결과를 저장하기 위해 다음과 같이 작성했습니다.

<select id="SQL-LIST" parameterClass="java.util.Map" resultClass="java.util.Map">
SELECT ...
</select> 

그렇게 하니
다음의 에러가 발생하더군요.

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];  
--- The error occurred in /sql/CommunityMDAO.xml. 
--- The error occurred while applying a result map. 
--- Check the Community.SQL-LIST-AutoResultMap. 
--- Check the result mapping for the 'UPT_DATE' property. 
--- Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class.  Cause: java.lang.InstantiationException: java.util.Map; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in /sql/CommunityMDAO.xml. 
--- The error occurred while applying a result map. 
--- Check the Community.SQL-LIST-AutoResultMap. 
--- Check the result mapping for the 'UPT_DATE' property. 
--- Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class.  Cause: java.lang.InstantiationException: java.util.Map

java의 Map의 경우 interface 이다 보니
초기화에 실패하는 문제가 발생하더군요..

parameterClass 의 경우에는
인터페이스로 선언만 하면 전달인자에 의해서 자동으로 변환이 되지만,
resultClass 는 실존하는 형태로 제공이 되어야만 초기화가 가능한 것 같습니다.

그래서 다음과 같이 수정했습니다.

<select id="SQL-LIST" parameterClass="java.util.Map" resultClass="java.util.HashMap">
SELECT ...
</select>

이렇게 수정하고 나니
해결이 문제 없이 표기 되더군요..

별도의 DTO 생성 없이 하려다 보니
이런 문제가 생겼네요...

이거 때문에 2시간은 그냥 보낸 듯... ^^;;

참고:
http://blog.daum.net/_blog/BlogTypeView.do?blogid=09j4R&articleno=17200835#ajax_history_home

Comment +0