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

问题描述:

在将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直接当字符串处理。因此,后期修改时,只修改常量的值是没有用的。

时间: 2024-10-09 22:04:56

修改Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError的相关文章

关于mysql下hibernate实体类字段与数据库关键字冲突的问题

好久没写了,都忘记博客了,趁着现在还在公司,写的东西是经过验证的,不是在家凭记忆力写的,正确率有保障,就说说最近遇到的一件事情吧. 以前一直用的oracle数据库,这次项目我负责的模块所在的系统是用的mysql数据库,结果当初建表时候,字段什么的全靠百度,实在是英语不行,然后有个字段叫usage,是mysql数据库的关键字,当时自己测试时候就发现了,但是想着我只是sql语句,加下``,一样可以用,所以就没引起重视. 结果一期已经上线了,现在对这个表要进行其他的维护,才发现用hibernate直接

spring+hibernate实体类注解详解(非原创) + cascade属性取值

@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{} 1 @Entity(name="EntityName") 必须 name为可选,对应数据库中一的个表 2 @Table(name="

MyEclipse从数据库逆向生成Hibernate实体类

这个分为二个操作:数据库操作和MyEclipse操作 关系映射有:单双向1-n.n-1.n-n. 映射关系多由数据库里的表关系决定 当然也可以只对一个表进行操作 单双向1-n.n-1由二个表 单双向n-n由三个表,其中第三个表连接另外二个表 以下是创建n-n    MyEclipse从数据库逆向生成Hibernate实体类: 数据库操作: 创建表:Person_inf address_inf person_address 其中的关系是:person_address创建外键 需要注意的是perso

Intellij idea生成Hibernate实体类

反向生成基于注解的Hibernate实体类 1. 为项目添加Hibernate支持 2. 在IDE右边找到database,然后按照步骤添加数据. 3. 保存后.在主面板左侧有persistence,在hibernate图标上点击右键-Generate Persistence Mapping-By Database Scheme. 4. 选好数据库,选好包的位置,在下面勾上要生成的表对应的pojo,添加到sessionFactory,并且勾上为每一个pojo生成XML即可.

eclipse从数据库逆向生成Hibernate实体类(eclipse中反向生成hibernate实体类+jpa注释)

eclipse从数据库逆向生成Hibernate实体类 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再"自己"建立一变VO.意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表:要么就先进行数据库表设计,再逆向生成实体类.没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计. 原因是: 1. 1.5倍工作量,浪费时间.(时间对公司来说很重要) 2. 无法

[转]eclipse借助hibernate tool从数据库逆向生成Hibernate实体类

如何从数据库逆向生成Hibernate实体类呢??? 1. 首先,要在eclipse中采用自带的数据库管理器(Data Management),连通你的数据库: 然后选择数据库,这里用的oracle,然后给个名字,如MyOracle. 点击下图中按钮,新建一个数据库驱动的配置. 选择数据库版本,这里是oracle 10g版本,可以为该配置另起个名字. 然后选择相应数据库版本的jar包. 下面就是依据自身情况填写数据库连接配置了. 接下来,完善Properties下的General选项卡内容,同样

【转】Eclipse从数据库逆向生成Hibernate实体类

原文地址:http://blog.csdn.net/wangpeng047/article/details/6877720 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再"自己"建立一变VO.意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表:要么就先进行数据库表设计,再逆向生成实体类.没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计. 原因是:

Int与Integer(Java复习一)

最近一直在复习java,写一下其中自己的疑惑点.第一个讲Int和Integer. 首先,应该明确的式Int是数据类型,Integer是封装Int的一个类. 八大数据类型,java都有封装.boolean->Boolean;char->Character;byte->Byte;short->Short;int->Integer;long->Long;float->Float;double->Double; 后者就成了类. 区别一: 在比较两个数大小的时候两者就

记一次使用修改字节码的方法解决java.lang.NoSuchMethodError

接兔兔国际sdk ane 充值界面选择兔币充值就会闪退, 观察logcat ,NoSuchMethodError: com.tutu.common.a.b.getContext 原来是因为没有方法找不到 04-19 10:10:54.224: E/AndroidRuntime(20315): FATAL EXCEPTION: main 04-19 10:10:54.224: E/AndroidRuntime(20315): Process: com.tutusdk.global.demo, PI