码迷,mamicode.com
首页 > 编程语言 > 详细

修改Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError

时间:2015-06-23 13:36:28      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:hibernate   实体类   java.lang.nosuchmeth   

问题描述:

      在将Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError,但是明明是有这个方法的,但是一直说没有这个方法。后经仔细对比字节码文件,发现jdk在编译字节码时,会对相关方法进行处理。

详细编译情况如下:

原始代码:

    net.setPushstatus(Integer.parseInt(pushstatus));

实体类属性字段类型为int 时编译的代码:

    net.setPushstatus(Integer.parseInt(pushstatus));

实体类属性字段类型为Integer时编译的代码:

    net.setPushstatus(Integer.valueOf(Integer.parseInt(pushstatus)));

在将int转换为Integer过程中,凡是调用该字段的set方法的类,都会悄悄的进行重新编译。因此,需要将编译后的新的class文件进行重新发布。

类似问题:

    1、使用 static final 关键字定义的静态常量,如果该常量的值日后需要改变,那么需要把使用到这个常量的所有class文件进行重新发布。

     原因:静态常量在编译时会被jdk直接当字符串处理。因此,后期修改时,只修改常量的值是没有用的。

修改Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError

标签:hibernate   实体类   java.lang.nosuchmeth   

原文地址:http://blog.csdn.net/zgs_shmily/article/details/46604059

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!