线上突然出现问题:本着这可能是环境问题,应该不是我写的,这一眼就知道是历史bug的心情排查下。
Method threw 'org.hibernate.ObjectNotFoundException' exception. Cannot evaluate *.*.entity.*
看异常就是找不到对象,对象是数据库直接查出来的怎么突然就没有,且前面用这个对象处理了一堆的业务也没问题。
调试下:发现对象里面有异常。纳尼有异常还能蹦这么久直到最后才出现?
此处应有一个数据库查询操作,经过数据库查询,这个字段确实保存的有问题。根据这个字段查询出来确实为null;
为什么不抛异常呢?翻这个对象定义,嗯?懒加载!是这个东西了!
懒加载:虽然字段对应的对象是null,出现异常了,但是由于是懒加载,所以实际上是没有加载到这个数据的,只有当对象需要用到的时候再去加载。所以一直没有抛异常。
1.由于对象中year这个字段对应的Datadict数据库对象不能根据year_id查询出来(null),所以这个里出现ObjectNotFound异常
2.但是由于这个year字段是懒加载,导致直到真正使用的时候才抛出了这个异常。