vchar(4000)插入2000汉字报错

来来去去123 来来去去123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用的是oracle9
有一个字段设置为vchar(4000)
hibernate 映射为: <property name="complainPosition" column="complain_position" type="string" length="4000" />
obj.set....
使用template.update(obj)
当数据str.getBytes().length >2000的时候就报错:数据大小超出此类型的最大值

客户要求允许 2000个汉字,求指导。

我不想用clob类型!

另外附上一个问题:由于这样要求的字段有两个,都必须要2000个汉字,一个字段是问题,一个字段是解决办法。
配置文件为<property name="dealSituation" column="deal_situation" type="text" />
当我用两个同时用clob的时候,当其中一个数据str.getBytes().length =2500的时候,可以正常保存。
当两个字段同时插入str.getBytes().length =2500的汉字的时候,就报错:
ORA-01483: DATE 或 NUMBER 绑定变量的长度无效

我已经疯掉了,以前用sql2000,直接在数据库里设置为text或者长度为4000的字段,都不会出现问题,
神马2000个汉字都能像我们所知道的那样正常保存。PreparedStatement对字符串的要求是不能超过2000,
可以通过stmt.setCharacterStream(1, new InputStreamReader(String内容, String内容.length());
来调整。
不过我现在是用的hibernate来保存的,虽然show_sql打印发现hibernate也是用的预处理,但我没办法调整它的长度限制。。。
求大侠来指点迷津。。。。。

经过询,我大致知道的原因是,
...全文

相关推荐

评论 81
收藏 已收藏
分享
返回顶部
来来去去123
Web 开发 81,108 成员 341,721 内容