Hibernate3与javaee5的兼容问题
用Hibernate和javaee5时经常报一个错误noSuchMethodFound:javax.persistence.OneToOne.orphanRemoval()Z
javax.persistence.OneToMany.orphanRemoval()Z
javax.persistence.ManyToOne.orphanRemoval()Z
看了一下,是兼容性问题,在JavaEE5的library里有javaee.jar里面有javax.persistence.OneToOne类,但这个类里面没有orphanRemoval()方法。
而在,hibernate-jpa的包里,有javax.persistence.OneToOne,也有orphanRemoval()这个方法,所以呢,我们用的应该是hibernate-jpa包里的类,然而java虚拟机在加载类时,先加载JavaEE5的类,加载javax.persistence.OneToOne,但没有orphanRemoval()方法,所以呢,抛出异常,根本没去hibernate-jpa里找,所以就有上面的异常了。
解决办法:
(1)不用JavaEE5
(2)必须要用JavaEE5的情况,只能修改类库了
修改类库又有两个方法:
a.用RAR工具将javaee.jar里的javax下的persistence文件夹用hibernate-jpa包里的javax里的persistence文件夹覆盖。
b.用Rar删除javaee.jar里的javax下的persistence文件夹