sprintmvc+ibatis+oracle无法插入clob字段的问题

soyestrellafortuna soyestrellafortuna 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
客户提供的代码框架
其中使用的有: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>


网上查了不少文章,试了好几种方法,都是因为长度导致失败。特到这儿发帖求助,望大家帮忙看看怎么解决。
...全文

相关推荐

CheckOutOfDateMrpSteps.py00000

CheckOutOfDateMrpSteps.py00000

大助794

驱动精灵(驱动精灵家用标准版)

1. 硬件扫描 + 驱动匹配 识别声卡、网卡、显卡、芯片组、打印机、外设,找出缺失 / 异常 / 旧驱动,按硬件 ID 匹配驱动包;适合新装系统、设备管理器黄感叹号。 2. 驱动备份 & 一键还原 装机前备份整套驱动,重装系统后直接恢复,不用重新下载;支持导出独立备份包。 3. 驱动卸载、回滚、清理 删掉冲突旧驱动、残留驱动文件;更新翻车可以回退上一版驱动,解决蓝屏、花屏、无声音。 4. 硬件信息查看 CPU、主板、硬盘、内存、显卡基础信息,附带简单温度监控。 5. 附带小工具 网卡修复、音频修复、DirectX 修复、系统组件修复。

YYcsdn56

产业园区运营负责人如何利用数智工具提升企业创新服务能力?.docx

产业园区运营负责人如何利用数智工具提升企业创新服务能力?

BIZKEEN

年会抽奖网页程序2026

用于年会抽奖

洲上渔者

基于模糊PID与传统PID控制无刷直流电机对比仿真模型【说明文档+参考文献等】

内容概要:本文介绍了一套基于Simulink的无刷直流电机(BLDC)控制系统仿真模型资源,重点对比了模糊PID与传统PID控制策略在电机调速中的性能差异。资源包含多个仿真模型,涵盖模糊PID控制、传统PID控制、无位置传感器控制、滑模观测器以及转速电流双闭环PI控制等,总计三个核心仿真系统。通过建模仿真,用户可深入理解不同控制算法在无刷直流电机系统中的动态响应、抗干扰能力、稳定性及控制精度表现。文档提供了详尽的说明材料、参考文献和实现代码,尤其突出了模糊PID相较于传统PID在非线性、时变系统中更强的自适应调节能力。此外,资源还涉及无感控制与滑模观测器的设计,有助于掌握现代电机控制中的先进观测与估算技术,适用于电力电子、电机控制及相关领域的科研与教学实践。 适合人群:从事电机控制、电力电子、自动化、电气工程等专业的科研人员、研究生及高年级本科生,以及工业界从事电机驱动系统开发的工程师和技术人员。 使用场景及目标:①研究模糊PID与传统PID在无刷直流电机调速系统中的控制性能差异,分析其超调量、响应速度与稳态精度;②学习并掌握无位置传感器控制与滑模观测器的设计原理与实现方法,提升对电机状态估计技术的理解;③开展转速电流双闭环控制系统的建模与仿真,支持学术论文复现、课程设计与创新控制算法的验证与优化。 阅读建议:建议结合提供的说明文档与参考文献,按照模块逐步运行各仿真模型,重点关注控制参数调节对系统动态性能的影响;通过对比模糊PID与传统PID的仿真结果,深入理解智能控制策略的优势;在学习过程中应动手修改参数、尝试算法改进,并通过示波器观察波形变化,以增强对控制理论与工程实践结合的理解。

梦想科研社_研学
评论 11
收藏 已收藏
分享
返回顶部
soyestrellafortuna
Java EE 67,535 成员 225,843 内容