sprintmvc+ibatis+oracle无法插入clob字段的问题
其中使用的有:ibatis-2.3.4.726.jar、ojdbc6.jar、classes12.jar
问题描述如下
当请求第三方做交易操作时,第三方会将交易的报文返回,我需要将请求的报文与返回的报文保存到表中。当报文较少的时候,能正常插入。但当报文比较大的时候,则无法进行插入操作。
异常信息如下
17:28:54,733 INFO [XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
17:28:54,906 INFO [SQLErrorCodesFactory] SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
17:29:07,084 ERROR [STDERR] org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [17070];
--- The error occurred in com/upic/pay/biz/bo/sql/TradeMessagesSql.xml.
--- The error occurred while applying a parameter map.
--- Check the tradeMessages.insert-InlineParameterMap.
--- Check the parameter mapping for the 'requestXml' property.
--- Cause: java.sql.SQLException: 数据大小超出此类型的最大值: 3539; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/upic/pay/biz/bo/sql/TradeMessagesSql.xml.
--- The error occurred while applying a parameter map.
--- Check the tradeMessages.insert-InlineParameterMap.
--- Check the parameter mapping for the 'requestXml' property.
--- Cause: java.sql.SQLException: 数据大小超出此类型的最大值: 3539环境大致描述如下:
oracle中有一张交易报文的表,其中包括请求与返回两个字段是clob类型。存放XML类型的数据。
主要的字段如下
BIZ_NO = #bizNo:VARCHAR#,
SERIALIZE_NO = #serializeNo:VARCHAR#,
RESPONSE_XML = #responseXml:CLOB#,
REQUEST_XML = #requestXml:CLOB#,
INTERACTIVE_TIME = #interactiveTime:DATE#,
INTERACTIVE_TYPE = #interactiveType:VARCHAR#,
CHANNEL_TYPE = #channelType:VARCHAR#,
TRADE_TYPE = #tradeType:VARCHAR#,java对象主要属性如下:geter,seter方法略
private String messageId;
private String bizNo;
private String serializeNo;
private String responseXml;
private String requestXml;
private Date interactiveTime;
private String interactiveType;
private String channelType;
private String tradeType;ibatis的配置主要点如下
dao-context.xml
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="com/upic/pay/biz/bo/sql/sql-map-config.xml" />
<property name="dataSource" ref="dataSource" />
<property name="lobHandler" ref="lobHandler" />
</bean>
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"/>
sql-map-config.xml
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxSessions="3000"
maxTransactions="3000"
maxRequests="3000"/>
<typeHandler jdbcType="CLOB" javaType="java.lang.String" callback="org.springframework.orm.ibatis.support.ClobStringTypeHandler" />
</sqlMapConfig>
插入部分的sql如下
<insert id="tradeMessages.insert" parameterClass="com.upic.pay.domain.TradeMessages">
<![CDATA[
insert into T_PAY_TRADE_MESSAGES
(
MESSAGE_ID,
BIZ_NO,
SERIALIZE_NO,
RESPONSE_XML,
REQUEST_XML,
INTERACTIVE_TIME,
INTERACTIVE_TYPE,
CHANNEL_TYPE,
TRADE_TYPE,
CREATED_BY,
CREATED_DATE,
UPDATED_BY,
UPDATED_DATE
,DELETED_FLAG
)
values
(
#messageId:VARCHAR#,
#bizNo:VARCHAR#,
#serializeNo:VARCHAR#,
#responseXml,javaType=java.lang.String,jdbcType=CLOB#,
#requestXml,javaType=java.lang.String,jdbcType=CLOB#,
#interactiveTime:DATE#,
#interactiveType:VARCHAR#,
#channelType:VARCHAR#,
#tradeType:VARCHAR#,
#createdBy:VARCHAR#,
sysdate,
#updatedBy:VARCHAR#,
sysdate
,'0'
)
]]>
</insert>
网上查了不少文章,试了好几种方法,都是因为长度导致失败。特到这儿发帖求助,望大家帮忙看看怎么解决。
相关推荐
产业园区如何高效对接企业技术需求与高校科研成果?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)
数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.csdn.net/mtl1994
高校技术转移办公室人员如何系统化管理科技成果信息?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。



