我正在尝试升级到Hibernate 3.5.3-FINAL.
运行我的单元测试时,我现在收到以下异常:
java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1837)
Run Code Online (Sandbox Code Playgroud)
我的类路径包含以下JAR:
来自hibernate dist:
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
slf4j-api-1.5.8.jar
cglib-2.2.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
Run Code Online (Sandbox Code Playgroud)
其他罐子:
blazeds-common-3.2.0.3978.jar
blazeds-core-3.2.0.3978.jar
blazeds-opt-3.2.0.3978.jar
blazeds-proxy-3.2.0.3978.jar
blazeds-remoting-3.2.0.3978.jar
commons-lang-2.3.jar
dbunit-2.4.7.jar
ejb3-persistence.jar // Note, I've tried excluding this, but I get different errors
guava-r05.jar
hsqldb-1.8.0.7.jar
junit-4.1.jar
lambdaj-2.0-with-dependencies.jar
log4j-1.2.14.jar
mockito-all-1.8.0.jar
persistence-api-1.0.jar
spring-security-core-2.0.0.jar
spring.jar
sqljdbc.jar
Run Code Online (Sandbox Code Playgroud)
我研究了这个,我发现答案表明我的网络服务器必须符合JPA2标准:
不幸的是,如果您的应用服务器不符合JPA 2,那么您很可能会失败
该项目是一个库,而不是一个Web服务器项目.(虽然它最终被部署到网络服务器,但我只是在这里运行单元测试)
我错过了什么?
<indulgent_rant>
一点题外话,这是非常令人沮丧,每次我升级Hibernate中,我发现自己花了几个小时研究矛盾的罐子MethodNotFoundException或ClassNotFoundException的.必须有一个更简单的方法吗?
我确信通过宣布他们将模块合并回一个核心项目,这些冲突会消失吗?
</indulgent_rant>
Pas*_*ent 20
正如Timo所指出的,删除persistence-api-1.0.jar.
以防万一,这里是我正在使用的依赖项:
org.hibernate:hibernate-entitymanager:jar:3.5.3-Final:compile +- org.hibernate:hibernate-core:jar:3.5.3-Final:compile | +- antlr:antlr:jar:2.7.6:compile | +- commons-collections:commons-collections:jar:3.2:compile | +- dom4j:dom4j:jar:1.6.1:compile | | \- xml-apis:xml-apis:jar:1.0.b2:compile | \- javax.transaction:jta:jar:1.1:compile +- org.hibernate:hibernate-annotations:jar:3.5.3-Final:compile | \- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile +- cglib:cglib:jar:2.2:compile | \- asm:asm:jar:3.1:compile +- javassist:javassist:jar:3.9.0.GA:compile \- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile
我从我的单一声明中得到它们pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.3-Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这应该以某种方式回答你的纵容咆哮(如果我改写:使用Maven - 或者知道你在做什么).
小智 10
从项目lib位置persistence-api-1.0.jar ejb3-persistence.jar中删除这些文件
仅添加javax.persistence-2.0.0.jar
它包含所有必需的字段和atrributes.
试试这个它会解决你的问题.
Manish Jaiswal
| 归档时间: |
|
| 查看次数: |
35710 次 |
| 最近记录: |