ibatis 2.3.4 merge 문 사용시 nullpoint 납니다....
- 작성자 :
- 이*욱
- 작성일 :
- 2014-08-22 09:28:38
- 조회수 :
- 1,725
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
merge 문을 사용하여 조건에 따라 수정하거나 등록을 합니다....
쿼리는 db툴을 이용하여 직접 넣어보니 문제가 없었습니다..
ibatis--
<update id="qna.merge" parameterClass="java.util.Map">
<![CDATA[
MERGE INTO USR_IIR.OR_ONLINE_QNA
위를 <statement 구분으로도 바꿔 봤으나 마찬가지 입니다..
DAO--
return update("xxx.merge", obj);
여기서..selectByPk 로 해도 마찬가지 더군요.
context-sqlMap.xml--
<bean id="egov.sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:***/sqlmap/${Globals.System.Status}/${Globals.DbType}/SqlMapConfig.xml</value>
</list>
</property>
<property name="mappingLocations" value="classpath:/**/map/sql_info.xml"/>
<property name="dataSource" ref="dataSource-${Globals.DbType}"/>
<property name="lobHandler" ref="egov.lobHandler"/>
</bean>
이상이 설정 내용입니다...
그리고 에러 로그는..파일로 첨부합니다..
참 그리고..제가 검색 한 바로.. ibatis 2.3.4 버전은 merge 에... return value 가 없다고 하던데..맞는건지..
그러면..제가 현재 전자정부프레임웍을 3.0 버전을 쓰고 있는데..ibatis 버전을 바꾸는 방법이 있는지..
porm.xml 에 보니깐.. ibatis 관련 dependency 가 없더군요...
수고 스럽겠지만...빠른 답변 부탁드리겠습니다...
쿼리는 db툴을 이용하여 직접 넣어보니 문제가 없었습니다..
ibatis--
<update id="qna.merge" parameterClass="java.util.Map">
<![CDATA[
MERGE INTO USR_IIR.OR_ONLINE_QNA
위를 <statement 구분으로도 바꿔 봤으나 마찬가지 입니다..
DAO--
return update("xxx.merge", obj);
여기서..selectByPk 로 해도 마찬가지 더군요.
context-sqlMap.xml--
<bean id="egov.sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:***/sqlmap/${Globals.System.Status}/${Globals.DbType}/SqlMapConfig.xml</value>
</list>
</property>
<property name="mappingLocations" value="classpath:/**/map/sql_info.xml"/>
<property name="dataSource" ref="dataSource-${Globals.DbType}"/>
<property name="lobHandler" ref="egov.lobHandler"/>
</bean>
이상이 설정 내용입니다...
그리고 에러 로그는..파일로 첨부합니다..
참 그리고..제가 검색 한 바로.. ibatis 2.3.4 버전은 merge 에... return value 가 없다고 하던데..맞는건지..
그러면..제가 현재 전자정부프레임웍을 3.0 버전을 쓰고 있는데..ibatis 버전을 바꾸는 방법이 있는지..
porm.xml 에 보니깐.. ibatis 관련 dependency 가 없더군요...
수고 스럽겠지만...빠른 답변 부탁드리겠습니다...
첨부파일
A
안녕하세요. 이동욱님.
DBMS가 oracle 9i 이상이시면 iBatis에서 merge를 사용하시는데는 문제가 없을 것 같고,
오류의 내용도 테이블 상의 타입에 대하여 파라미터를 지정 방식 부분의 문제인 것 같습니다.
즉, Datetime 컬럼으로 정의되어 있는 것에 대하여 Map방식으로 String을 지정하시는 경우 등입니다.
이 경우는 <typeHandler /> 등록을 통해 명시적으로 변환 처리 등을 하셔야 합니다.
추가적으로 iBatis는 2.3.4가 최종 버전으로 신규 버전부터는 MyBatis로 변경되어 있습니다.
최신 버전 적용을 원하시는 경우 MyBatis으로 전환하셔야 합니다. (이 경우 기존 config나 query xml에 대한 변경이 필요)
마지막으로 iBatis의 경우 merge에 대한 처리 시 0으로 리턴되는 issue에 대하여 현재까지 open 되어 있는 상태입니다.
즉, 변경 사항이 없고 0으로 리턴되는 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
DBMS가 oracle 9i 이상이시면 iBatis에서 merge를 사용하시는데는 문제가 없을 것 같고,
오류의 내용도 테이블 상의 타입에 대하여 파라미터를 지정 방식 부분의 문제인 것 같습니다.
즉, Datetime 컬럼으로 정의되어 있는 것에 대하여 Map방식으로 String을 지정하시는 경우 등입니다.
이 경우는 <typeHandler /> 등록을 통해 명시적으로 변환 처리 등을 하셔야 합니다.
추가적으로 iBatis는 2.3.4가 최종 버전으로 신규 버전부터는 MyBatis로 변경되어 있습니다.
최신 버전 적용을 원하시는 경우 MyBatis으로 전환하셔야 합니다. (이 경우 기존 config나 query xml에 대한 변경이 필요)
마지막으로 iBatis의 경우 merge에 대한 처리 시 0으로 리턴되는 issue에 대하여 현재까지 open 되어 있는 상태입니다.
즉, 변경 사항이 없고 0으로 리턴되는 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.