ORA-24816: 在实际的 LONG 或 LOB 列之后提供了扩展的非 LONG 绑定数据;不要只看给你显示的提示

1.先看图

ORA-24816: 在实际的 LONG 或 LOB 列之后提供了扩展的非 LONG 绑定数据;不要只看给你显示的提示

2.根据提示,查问题查原因: 总结一下网上的答案:基本都是同一个

这个原因是oracle11g的bug,处理办法就是更新或者insert的时候,把大字段放到最后。

我一脸懵啊;我的环境是hibernate。自动update的。我哪儿去设置这个更新顺序。

3.迫于无奈,我自己后台json打印出对象里面的值,因为分析下来,同样的代码,正式库没问题,测试库问题,定位到因为是最终更新数据库的时候才报错的,所以肯定一定是存储数据库的时候报错。再看图:

ORA-24816: 在实际的 LONG 或 LOB 列之后提供了扩展的非 LONG 绑定数据;不要只看给你显示的提示

   这里有个超长字段,没给拦截掉,数据库字段长度是设置的1000,这个长度肯定是超过1000字节的。报错就是这个字段太长导致,截取过后就好了。不过不清楚。为什么不提示字段超长,怀疑是与hibernate的识别大字段的逻辑有关系,字段太长,让hibernate识别大字段了,所以提示这个错误信息。如果有清楚底层逻辑的朋友,感谢留言告知一下。