Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z解决方案

不说别的先贴一段异常信息:

Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
	at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912)
	at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:796)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:4035)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3989)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1398)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
	at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1226)
	at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:173)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:854)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:425)
	at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:131)
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:288)
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
	... 36 more

经查阅资料证实,出现 
java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 异常的主要原因是使用的MyEclipse自带的javaee.jar版本较低,和hibernate、JPA的冲突 我使用的是myeclips 8.5 版本自带的是javaee5的jar,因此我果断的将javaee5升级为javaee6.jar删除javaee5下面的所有jar包。还有就是哪个hibernate持久化的【<span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">ejb3-persistence.jar】也提供了</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">OneToMany的注解但是他没有</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">orphanRemoval()方法。因此会误导程序不知道调用加载的是哪个类。因此最好的解决方法也是直接删掉。总得来说 如果你的项目中有 【</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">hibernate-jpa-2.0-api-1.0.1.Final.jar】 那就直接把刚才上面提到的 jar删除即可。 </span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">
</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">  再者,在我们将javaee5换成javaee6的时候我们 需要将其中的 </span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">persistence 文件夹删掉 如下图所示</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">
<img src="https://img-blog.csdn.net/20150424170711968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTk5MTY1Nzc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="110" height="110" border="1" alt="" />

</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, Tahoma, Verdana, 宋体; font-size: 15px; line-height: 25px;">
</span>   所以会出现冲突的信息 这段异常的信息主要是说明在 OneToMany的类中找不到对应的<span style="font-family: Arial, Helvetica, sans-serif;">orphanRemoval()方法。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">因此这里 我们可以利用反射打印下我们调用的 </span><span style="font-family: Arial, Helvetica, sans-serif;">OneToMany 方法到底是哪个包提供的。 方法如下 </span><pre name="code" class="java">public static void main(String[] args) {
		try {
			System.out.println(Class.forName( "javax.persistence.OneToMany" ).getProtectionDomain().getCodeSource().getLocation().getFile());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

最后打印的结果为 :
 /F:/Workspace/AgricomRelocationProject1/WebRoot/WEB-INF/lib/hibernate-jpa-2.0-api-1.0.1.Final.jar
见图
<img src="https://img-blog.csdn.net/20150424170740026?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTk5MTY1Nzc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="120" height="120" border="2" vspace="20" hspace="50" alt="" />
 
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值