• java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z


    我现在用的是hibernate3.6final,出现了下面这个异常:(当我使用@ManyToOne时,不会出现异常,而且用@ManyToMany也正常

    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.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
    	at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    	... 65 more
    

    查了很多资料,说什么的都有,解决办法是:

    删除对Java EE 5 Libraries中persitence的使用。(javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar存在版本冲突.[或下载新版本javaee.jar] 或 用RAR打开javaee.jar,删除javax下的persitence目录)


    个人觉得删除对Java EE 5 Libraries中persitence的使用有点不妥,于是重新分析了一下,以下就是分析结果:

    1.在hibernate3.5之前,我们运用hibernate开发J2EE项目通常会引以下几个jar包:
    hibernate核心包:hibernate3.jar
    持久化:ejb3-persistence.jar
    则javax.persistence.OneToMany.class就在ejb3-persistence.jar中。

    2.在hibernate3.5及其以后,运用hibernate开发J2EE项目通常会引以下几个jar包:
    hibernate核心包:hibernate3.jar
    持久化:hibernate-jpa-2.0-XXX.jar
    hibernate-jpa-2.0-XXX.jar中已将包含了ejb3-persistence.jar所有类库和其他一些扩展,固然javax.persistence.OneToMany.class也就在hibernate-jpa-2.0-XXX.jar中了。所以当我们从3.5以下版本上级到3.5以上版本时,很容易出现不知道哪些jar包该保留哪些该删掉,因而两个jar包同时存在,出现了这个冲突异常。

    3.其实持久化并不是只有ejb3-persistence.jar和hibernate-jpa-2.0-XXX.jar提供,Java EE(注意:是Java EE,并不是J2ee,J2ee在1.4以后就命名为Java EE,而且新增了很多类库)核心类库同样也提供了javax.persistence类库,当你的项目hibernate导入的jar都正常后仍旧出现冲突异常,那么你就要考虑是不是你引入的其他类库导致了这个异常。比如Java EE5及其以后的核心类库。


    以上只是本人片面的分析与思考,如有不对之处,请大家多多指教。


  • 相关阅读:
    convert image to base64 and post to RESTful wcf
    在android webview实现截屏的手动tounchmove裁剪图片
    How to use jquery ajax and android request security RESTful WCF
    using swfUpload in asp.net mvc
    using HttpClient and sending json data to RESTful server in adroind
    ODP.NET数据访问
    android image watermark
    解决国内不能访问github的问题
    idapro权威指南第二版阅读笔记第九章 交叉引用和绘图功能
    idapro权威指南第二版阅读笔记第二章 逆向和反汇编工具
  • 原文地址:https://www.cnblogs.com/pangblog/p/3323033.html
Copyright © 2020-2023  润新知