用query 查询 query.getResultList()竟然报 ava.lang.ArrayIndexOutOfBoundsException: 2,这个问题网上不多有给出缘由的。

异常以下所示:
数据库

网上搜索了半天都没有解决,包括stackoverflow这个
https://stackoverflow.com/questions/6446196/hibernate-query-getresultlist-exception数组

缘由分析,首先数据量并不大只有几十条。并非查询数据太多超过list集合了。 因为用的hibernate的hql查询,开始怀疑是否是表关联脏数据致使的。通过查看数据关联并没有异常。也不可能存在一对多自动变成多对多状况出现。框架

仔细查看报错行代码以下:
第428行
测试

154行
hibernate

因为query.getResultList()为框架内部自带的方法,不会出现bug。一时没有头绪。
最难解决的就是这种bug,有错误但看不到源码,未报出具体错误缘由。很邪门,项目在本地重启重试依然报错。3d

后来考虑查询主表最近有那些改动,确认数据库没有变更,只在代码里增长了一个数据类型。 查看查询对象的entity以下:对象

忽然明白,问题就出在这里。因为新加业务订单类型有新加了一个类型。 查看数据库表数据type保存的是对应枚举类型的索引值。
blog

总结: 一、此问题出现代码缘由为实体里枚举属性没有数据库对应的索引值致使。数据库存的是2,但orderType类型里只有2个类型,没有索引为2的类型所以就报数组越界异常了。 二、业务缘由为不一样模块功能开发用的同一个测试库,一个分支上代码变了并给库里新加了数据,另外一个分支上用此功能则会有脏数据。。索引

相关文章
相关标签/搜索