最近,在做历史数据迁移项目时,用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,创建自身的游标,才能正常插入的