最近,在做历史数据迁移项目时,用hibernate3.2 插入clob时,总会出现
ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
刚开始的时候以为是程序问题,首先从程序入手解决,然后根据错误提示信息,再从网上搜所相关资料,有的说是oracle驱动的bug,还有说是oracle dbManager设置问题,比如参数设置,约束等等,但这都不是问题的根本!后来,通过查看hibernate日志发现,在oracle10g 插入clob和oracle9i插入clob会出现不同的情况
1.Oracle 10 g
Hibernate.createClob(/*直接插入超长字符*/)
正常插入,看来10g已经解决clob超大字符的限制
2.Oracle 9 i
Hibernate.createClob(/*直接插入超长字符*/)
不能正常插入,会出现ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
发现当Hibernate.createClob("")的情况是正常插入
看来9i是需首先创建一个emptyClob,创建自身的游标,才能正常插入的
本文探讨了使用Hibernate在Oracle9i与Oracle10g中插入CLOB数据时遇到的不同问题及解决方案。在Oracle9i中直接插入CLOB会触发ORA-01461错误,而Oracle10g则能正常处理。
6145

被折叠的 条评论
为什么被折叠?



