com.sun.jdi.InvocationException occurred invoking method._Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2336 | 回复: 0   主题: com.sun.jdi.InvocationException occurred invoking method.        下一篇 
当风筝没有风
注册用户
等级:列兵
经验:86
发帖:3
精华:0
注册:2015-8-27
状态:离线
发送短消息息给当风筝没有风 加好友    发送短消息息给当风筝没有风 发消息
发表于: IP:您无权察看 2015-8-27 14:57:41 | [全部帖] [楼主帖] 楼主

前几天遇到一个问题,错误信息如下:

20141124112120829 拷贝.jpg

习惯性的上网搜了一下解决方法,之后发现大多数帖子、博客都说是Hibernate懒加载造成的问题,更搞笑的是解决方案竟然是将lazy="false"。。。

对于这种治标不治本的解决方法,我无力吐槽,只能一笑而过了。。。

之后回头好好看了看错误信息,发现Bug其实已经很明显了,就是ID为[4028810749dfa59c0149dfaf16810004]的OrgInfo对象不存在呗。。。

于是debug调试了下,发现是在此处OrgInfoModify获取OrgInfo对象时导致的问题,此时OrgInfo对象的值为com.sun.jdi.InvocationException occurred invoking method.

[java] view plaincopyprint?

  1. for (OrgInfoModify orgInfoModify : modifyList) {  

  2.     OrgInfo orgInfo = orgInfoModify.getOrgInfo();  

  3.     if (orgInfo != null) {  

  4.         if(!groupOrgId.equals(orgInfo.getObjId())) {  

  5.             resList.add(orgInfoModify);  

  6.         }  

  7.     }  

  8. }  


忘了说,由于是二次开发的项目,所以对源代码不是很熟悉,只能针对问题去看某一模块的代码片段。。。


于是翻开OrgInfoModify的源码,发现OrgInfoModify与OrgInfo是多对一的关系:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1.   

  2. @ManyToOne(fetch=FetchType.LAZY, optional=true)  

  3. @JoinColumn(name="ORG_INFO_ID"// 关联的外键  

  4. @BatchSize(size = 15// 批量抓取  

  5. private OrgInfo orgInfo;  


于是根据错误提示信息,在OrgInfo表中查找ID为[4028810749dfa59c0149dfaf16810004]的记录,记录不存在,所以懒加载的时候导致对象无法成功加载。

这个时候出错的原因已经很明显了,接下来就是解决数据缺失的问题了,而非像网上大多数说的将lazy属性设置为false。




该贴被当风筝没有风编辑于2015-8-27 14:58:49



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论