clob 데이터 등록할때 에러가 발생합니다.
- 작성자 :
- 김*겸
- 작성일 :
- 2013-07-05 11:14:56
- 조회수 :
- 1,751
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
안녕하세요.
환경은 jdk1.6 tomcat6.0 오라클 11g, 전자정부프레임워크2.0 ojdbc1.4 입니다.
context-sqlMap.xml에서 clob 관련 설정을 다음과 같이 했습니다.
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:/egovframework/sqlmap/rte/sql-map-config.xml"/>
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="lobHandler"/>
</bean>
실제 sample.xml에서 colb 항목(sample_text : clob타입) 입력할때
<insert id="sampleDAO.insertSample" parameterClass="hashMap">
insert into lms_sample (
sample_no
, sample_title
, sample_text
) values (
#sample_no#
, #sample_title#
, #sample_text#
)
</insert>
위와 같이 했습니다.
변수는 java.util.HashMap을 이용했습니다.
데이터가 작을때는 입력되는데,
데이터 양이 많아지면 다음과 같은 에러가 발생합니다.
Check the parameter mapping for the 'sample_text' property
Cause: java.sql.SQLException: 데이터 크기가 해당 유형의 최대 크기보다 큽니다: 4171
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:393)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
at org.springframework.orm.ibatis.SqlMapClientTemplate$8.doInSqlMapClient(SqlMapClientTemplate.java:366)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
관련 Q&A의 글을 읽어보면
context-sqlMap.xml에 lob 관련 추가해 주고,
쿼리에서 그냥 입력하면 된다고 들었는데요
다른 추가 사항이 있는 걸까요?
답변 부탁드립니다.
환경은 jdk1.6 tomcat6.0 오라클 11g, 전자정부프레임워크2.0 ojdbc1.4 입니다.
context-sqlMap.xml에서 clob 관련 설정을 다음과 같이 했습니다.
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:/egovframework/sqlmap/rte/sql-map-config.xml"/>
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="lobHandler"/>
</bean>
실제 sample.xml에서 colb 항목(sample_text : clob타입) 입력할때
<insert id="sampleDAO.insertSample" parameterClass="hashMap">
insert into lms_sample (
sample_no
, sample_title
, sample_text
) values (
#sample_no#
, #sample_title#
, #sample_text#
)
</insert>
위와 같이 했습니다.
변수는 java.util.HashMap을 이용했습니다.
데이터가 작을때는 입력되는데,
데이터 양이 많아지면 다음과 같은 에러가 발생합니다.
Check the parameter mapping for the 'sample_text' property
Cause: java.sql.SQLException: 데이터 크기가 해당 유형의 최대 크기보다 큽니다: 4171
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:393)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
at org.springframework.orm.ibatis.SqlMapClientTemplate$8.doInSqlMapClient(SqlMapClientTemplate.java:366)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
관련 Q&A의 글을 읽어보면
context-sqlMap.xml에 lob 관련 추가해 주고,
쿼리에서 그냥 입력하면 된다고 들었는데요
다른 추가 사항이 있는 걸까요?
답변 부탁드립니다.
A
안녕하세요. 김택겸님.
해당 오류는 ojdbc14 버전의 차이에 의해 발생될 수 있습니다.
파일명은 동일하게 ojdbc14지만, Oracle 버전에 따라 다른 library가 존재합니다. 해당 Oracle 버전에 맞는 ojdbc14 파일을 테스트 해보시면 되실 것 같습니다.
(Oracle 서버 설치 경로 안에서 찾아보시면 되실 것 같습니다.)
그럼, 즐거운 하루되십시오.
감사합니다.
해당 오류는 ojdbc14 버전의 차이에 의해 발생될 수 있습니다.
파일명은 동일하게 ojdbc14지만, Oracle 버전에 따라 다른 library가 존재합니다. 해당 Oracle 버전에 맞는 ojdbc14 파일을 테스트 해보시면 되실 것 같습니다.
(Oracle 서버 설치 경로 안에서 찾아보시면 되실 것 같습니다.)
그럼, 즐거운 하루되십시오.
감사합니다.