hibernate:java.lang.RuntimeException: duplicate method:

在Hibernate3.3后版本中,使用的字节码增强包默认是javassist了。而在3.2.6中默认使用的是cglib。要在3.3中更换为cglib,需要进行如下操作:

1.在classpath下,添加hibernate.properties文件,并添加如下一行

hibernate.bytecode.provider=cglib

这行属性配置就是指定字节码生成包使用cglib。注意:

1)一定要写成key=value形式,我按照Hibernate下载包中提供properties样板文件写成了hibernate.bytecode.providercglib,死活不行。

2)不能通过在hibernate.cfg.xml文件中配置:<propertyname="hibernate.bytecode.provider">cglib</property>来更换,一定要在hibernate.properties中配置才起效。

2.添加cglib.jar到classpath中。Hibernate下载包中提供了cglib2.2.jar,但还需要添加cglib包依赖的asm3.1包。所以,干脆上cglib官网下载cglib-nodep-2.2.jar

完成以上两个步骤后,就把字节码生成包更换为cglib了。