hibernate4.2.1默认集成javassist-3.15.0-GA包的一个bug问题

昨天在写entity类时,在运行jetty时出错

16:01:39,782 ERROR JavassistLazyInitializer:166 - HHH000142: Javassist Enhancement failed: com.highrace.car.model.CarLicence
java.lang.RuntimeException: duplicate method: getHandler in com.highrace.car.model.CarLicence_$$_javassist_30
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:510)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:487)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:423)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:395)
......
Caused by: javassist.bytecode.DuplicateMemberException: duplicate method: getHandler in com.highrace.car.model.CarLicence_$$_javassist_30
......

我反反复复的检查entity类,发现并没有配置错误,最后错误定位到javassist包下面应该有getHandler与我的getHandler方法冲突

在网上查找方法

第一种,将默认的javassist改成cglib,

    1、导入cglib-nobep-2.2

    2、在hibernate.properties文件中加入

hibernate.bytecode.provider=cglib
       <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">false</prop>
                <!-- 由于我的hibernate是与spring集成的所以没有hibernate.properties文件
                只能在这加这两条配置 -->
                <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
                <prop key="hibernate.bytecode.provider">cglib</prop>

            </props>           
         </property>

http://stackoverflow.com/questions/2330373/how-to-force-hibernate-3-3-or-3-5-to-use-cglib-instead-of-javassist

http://stackoverflow.com/questions/2269185/duplicate-method-error-when-using-hibernate-javassist-gilead

第一种没成功。

第二种,经过我的反复查找,网上有人说这是javassist的一个bug,说后续版本可能会解决这个bug,于是我添加了下面的版本替换之前的版本,问题解决了。

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.18.2-GA</version>
</dependency>

https://hibernate.atlassian.net/browse/HHH-5731

转载于:https://my.oschina.net/u/814431/blog/297853

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值