OneToOne注解 javax.persistence.OneToMany.orphanRemoval()Z错误

来源:互联网 发布:mac 阿里旺旺不能用 编辑:程序博客网 时间:2024/05/16 07:08

解决办法汇总java.lang.NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval()Z

今天用了OneToOne注解,结果报异常java.lang.NoSuchMethodError: javax.persistence.OneToOne.orphanRemoval()Z

网上有几种解决的方法,现在汇总如下

(1)

如果是使用MyEclipse创建JavaEE5.0的Web项目,解决办法删除对Java EE 5 Libraries的使用。

问题原因javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar存在版本冲突。

参考文章http://hi.baidu.com/siasmen/blog/item/7253e954e3abdb55d0090607.html

(2)

如果使用了ejb的jar包,删除引用,

问题原因与hibernate-jpa-2.0-api-1.0.0.Final.jar冲突

(3)

如果是用junit测试,junit4自带的jpa包与hibernate的jpa包冲突

 

本人是第一种问题,一般好像都是第一种和第二种。

另外奇异的是本人只在使用OneToOne注解时报了错,而只用ManyToOne的时候却没有。。。题外话了,不知道为何

 

另转载注明请出处http://hi.baidu.com/woodcock1017/blog/item/cde710dc2f981ef877c63811.html



----------------------------------------------------------------------------------------------------------------------------------------------------


java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z异常
使用spring + hibernate annotations的@OneToMany 一对多双向关联后出现异常:
java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
出现这种异常通常是由于Myeclipse的javaee.jar 版本较低,与Hibernate等自带的JPA出现了冲突。
网上一些处理方法是删除项目里的 删除 建立web项目时自带的Javaee.jar,可是这样带来的后果是 httpServletRequest 等组件无法使用。
对于tomcat我目前的解决方法是:
1. 在 D:\Program Files\Genuitec\Common\plugins下搜索 EE_5 找到EE_5 文件夹;
2. 进去EE_5文件夹 右键 javaee.jar 打开方式 WINRAR压缩文件管理器,进去里面删除persistence文件夹 这个子文件夹。

对于weblogic我的解决方法是:
把hibernate-jpa-2.0-api-1.0.0.Final.jar放到D:\Program Files\weblogic\jdk160_05\jre\lib\ext 就没问题了。
(如果不行,可以考虑先尝试tomcat的解决方案,再接着试weblogic的。tomcat是修改java的jdk文件,而weblogic是修改本服务器里面的文件