【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
表结构如下:
create table test( id int, a1 varchar2(200), a2 varchar2(200), a3 varchar2(200), a4 varchar2(200), a5 varchar2(200), a7 varchar2(200), a8 varchar2(200), a9 varchar2(200), a10 varchar2(200) )
Test test = getModel(Test.class); test.set("id", "seq_op.nextval"); test.save();
Sql: insert into test(A2, A1, A4, A3, A5, A8, A7, ID, A10) values(?, ?, ?, ?, ?, ?, ?, seq_op.nextval, ?) 2014-03-11 21:00:41 [ERROR]-[Thread: qtp20698484-19]-[com.jfinal.core.ActionHandler.handle()]: /product/saveOrUpdateProduct com.jfinal.plugin.activerecord.ActiveRecordException: java.lang.ArrayIndexOutOfBoundsException: 8 at com.jfinal.plugin.activerecord.Model.save(Model.java:305) at cn.anycall.controller.ProdeuctController.saveOrUpdateProduct(ProdeuctController.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55) at com.jfinal.aop.ActionInvocationWrapper.invoke(ActionInvocationWrapper.java:45)
如果字段少于8个,可以插入!
if (DbKit.dialect.isOracle())
pst = conn.prepareStatement(sql.toString(), new String[]{tableInfo.getPrimaryKey()});
else
在这一句报错!
这是oracle的bug,请下载oracle 最新的jar,连接地址:http://download.oracle.com/otn/utilities_drivers/jdbc/11204/ojdbc6.jar
首先,恭喜楼主问题得解,可喜可贺!
其次,感谢楼主解决问题后的分享。
但是我有几点建议想对楼主谏言(不喜勿看,打扰见谅):
第一,从此问题的最终解决来看。楼主的描述实在是不足以让别人更好的帮助你解决问题。首先,你的标题和你的问题就对不上。其次,关于问题描述,最开始你只是把error的stacktrace信息发布出来,这样别人根本就无法很好的帮你判断问题,后来你对描述还更新过一次,加上了表结构和代码,但实际问题是在于oracle的驱动问题,你的描述也没有突出你用的是oracle的这个重点。为了让别人更好的帮助你,望今后把重点信息表述出来,感谢!
第二,对于问题的解决你也没有描述清楚。首先,prepareStatement这个API的文档说明并不能说明oracle驱动的这个bug,对于问题的解决没有实际的帮助。其次,你附带的那个csdn的帖子里面也对这个bug没有任何明确的说明,而且那个帖子最后的一个回复者所述,换驱动并没有解决同样的问题,这样让读者对此bug的描述和解决难免产生质疑,缺乏可信度。 虽然我又去stackoverflow确认过了,确实是oracle的jdbc驱动的问题,但是单就此问题的分享的角度,楼主的答案并没有充分体现出分享的价值。为了给大家带来更好的帮助,望楼主以后在回答的时候能给出更权威可信的答案。
ps:我附上stackoverflow对oracle驱动bug的帖子,作为对楼主的补充,供大家参考:http://stackoverflow.com/questions/277744/jdbc-oracle-arrayindexoutofboundsexception
文中还描述了一种workaround的解决方案,请大家参阅。
以上!万谢!
java.lang.ArrayIndexOutOfBoundsException: 8
下次提问还是先检查下错误再提吧
查了查api,如下: