博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSH框架中关于clob字段的处理跟踪
阅读量:5290 次
发布时间:2019-06-14

本文共 1781 字,大约阅读时间需要 5 分钟。

由一个bug更改而引发的一系列问题。。。

项目场景:

在信息导航管理模块中,编辑一条信息内容,此内容字段为clob类型,点击“保存”按钮,后台报错“ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值”。

一直以为是字段映射hibernate的问题,就从这些映射文件中查找问题,以为是hibernate对clob字段操作的问题,最终发现是sys_log表url字段过长而导致此错误;

------------------------------------------------------------------------------------------------

特此将google中的搜索记录如下:

1、ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值

检查插入的值是否大于该字段数据类型约束的长 度。

这个异常是指,用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如果是varchar2类型的,当长度超过2000,--4000(最 大值)之间的时候,oracle会自动将该字段值转为long型的,然后,插入操作失败。解决办法是:将此字段的类型改为clob或者blob类型;

网络资料链接:

 

2、内容字段确认为clob字段,再接着往下想,是不是clob字段在映射类型为String时出错了呢,顺着思路进行查找。

google搜索“hibernate clob”,查看资料五花八门,大致说hibernate对clob处理的问题,以及跟项目所使用的jar包也有关联,

也提出了一些解决方案,大部分搜索资料上都提到的方法,就是在hibernate.cfg.xml中添加一行配置:

<property name="hibernate.connection.SetBigStringTryClob">true</property>

这样在映射类和映射配置文件中,将clob字段映射为"String"即可,新增和修改时使用的是java.sql.Clob进行这些字段的转换,此功能是否有效,没有实验,且公司框架为ssh集合,思考着此类配置应该已经得到处理,或是Spring配置接管对clob的处理。

网络资料链接:

 

3、当前公司使用框架是应用多年的框架,对于clob字段的使用会有相关配置,于是从新查找ssh 对clob字段的处理。

框架中使用的Spring对clob类型的处理,详细可参考资料:

这篇文件讲的非常详细,Spring中已对clob字段的解决方案已进行配置,随后定位发生错误是映射配置文件关于clob的类型配置错误;

 

当处理clob类型的字段时,对应实体类成员变量的类型为java.lang.String,映射配置文件的数据库字段类型为org.springframework.orm.hibernate.support.ClobStringType

另有一篇资料有详细说明:http://blog.csdn.net/ilibaba/article/details/3742367

顺便说下另外一种数据类型blob所对应实体类的字段为 byte[] , 映射配置文件的数据库字段类型为:org.springframework.orm.hibernate3.support.BlobByteArrayType

关于二种类型的使用情况:大文本型的字段,大多设置为clob,而对于存储图片、文档等类型文件时应设置为blob

 

 4、更改完配置,进行debug断点跟踪,发现在记录日志时,也有错误,这个是导致“ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值”的原因。

原因是在取提交的url时,

RequestHelper requestHelper=new DefaultRequestHelper(request,response);

String url=requestHelper.getHref().toString();

得到的url包括提交所带的参数,包括提交的大字段内容都在里面,所以在往sys_log表中保存时,报了字段超长的错误,至此告一段落。

转载于:https://www.cnblogs.com/bingya/archive/2013/06/06/3121123.html

你可能感兴趣的文章
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
一步步学习微软InfoPath2010和SP2010--第五章节--添加逻辑和规则到表单(2)--处理验证与格式化...
查看>>
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。...
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>
IDEA快速实现接口快捷方式
查看>>
用默认的打开方式打开本地文件
查看>>
JavaScript-jQuery报TypeError $(...) is null错误(jQuery失效)解决办法
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
SAP销售模块塑工常见问题和解决方案(自己收藏)
查看>>
事后诸葛亮博客
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
Round Numbers
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Varish 缓存
查看>>
Jbpm5.4实例在JBoss中运行、及H2数据库迁移oracle数据库
查看>>
各个平台的mysql重启命令
查看>>
统计单词,字符,和行
查看>>