客户提上来一个问题。
看日志
Caused by:
java.sql.BatchUpdateException: ORA-12899: 列 "BS"."T_MOD_2"."C_COL_A" 的值太大 (实际值: 126, 最大值: 100)
看代码,数据流走过程是,由业务模块MOD_1将数据传到另一个模块MOD_2,在MOD_2中通过VO由T_MOD_1.C_COL_X传给T_MOD_2.C_COL_A。
查看T_MOD_1.C_COL_X字段Oracle定义长度200,T_MOD_2.C_COL_A为100,再确认当前记录T_MOD_1.C_COL_X实际字符长度为126。确定问题原因!
回头再看上面报错提示,ORA-12899: 这个说明是Oracle报出来的。hibernate VO映射文件对字符长度有定义,可在VO接收比该字段定义还要长的字符串,为什么没报错呢?求解惑
探讨了在使用Oracle数据库时遇到的列长度限制问题,分析了数据流从MOD_1到MOD_2过程中,字段长度不匹配导致的BatchUpdateException错误。详细解释了原因并解答了HibernateVO映射文件在接收较长字符串时不报错的现象。
1024





