值大于为此列指定的允许精度

用hibernate 持久化数据时,后台打印ORA-01438: 值大于此列指定的允许精确度。但是没有提示那个字段超出了范围,有什么方法可以定位到那个字段有问题吗?

应用层的开发人员,这个问题我没见到过好的方法来定位你的字段,你只有将里面有可能出这个问题的number字段都改改试试。Oracle DBA一般会通过trace日志的去找问题,过程比较复杂,我也不是很清楚。

1)检查对应表的number类型的字段,

2) 捞出持久化的字段取值

3) 手工在SQL工具或者命令行上,使用实际字段取值,拼凑SQL进行测试

这个应用层是没办法的,JDBC也不行。

对所有类型的字段,在set之前,先根据长度(可以从oracle系统表中取得表各个字段的最大长度)进行判断一下,哪个不对,自然就知道了,因为是自己控制的。

可以在程序中截取sql脚本与变量值,然后用变量值填充相应的变量,将填充好的语句在plsql中执行,就可以定位到有问题的字段了。