我正在使用Spring在一个具有许多Hibernate依赖项的现有项目上做一个原型。我试图定义一个自定义的LocalEntityManagerFactoryBean,在这里我得到了这个错误:
java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;我尝试过更新hibernate版本(由于项目向后兼容性导致许多其他编译错误,无法使用所有最新版本),但是使用下面的hibernate依赖关系图可以让它编译,但仍然会得到这个运行时依赖错误。当我搜索这个错误时,所有的结果都指向Hibernate 4和JPA2.1的升级。我们已经在使用Hibernate 4+了,所以只需稍微修改一下版本就行了,但没有运气。下面来自Gradle的依赖关系图显示,我没有任何旧版本的"org.hibernate.javax.persistence:hibernate-jpa-2.0-api“
| +--- org.hibernate:hibernate-entitymanager:4.3.7.Final
| | +--- org.hibernate:hibernate-core:4.3.7.Final
| | | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final
| | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final (*)
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| +--- org.hibernate:hibernate-validator:5.1.3.Final
| | | +--- org.hibernate:ejb3-persistence:1.0.2.GA
| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final
| | | | | | +--- org.hibernate:hibernate-core:3.5.6-Final -> 4.3.7.Final (*)
| | | | | | +--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
| | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | | | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| +--- org.hibernate:hibernate-entitymanager:4.3.7.Final
| | +--- org.hibernate:hibernate-core:4.3.7.Final
| | | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final
| | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final (*)
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| +--- org.hibernate:hibernate-validator:5.1.3.Final
| | | +--- org.hibernate:ejb3-persistence:1.0.2.GA
| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final
| | | | | | +--- org.hibernate:hibernate-core:3.5.6-Final -> 4.3.7.Final (*)
| | | | | | +--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
| | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | | | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| +--- org.hibernate:hibernate-entitymanager:4.3.7.Final
| | +--- org.hibernate:hibernate-core:4.3.7.Final
| | | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final
| | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final (*)
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| +--- org.hibernate:hibernate-validator:5.1.3.Final
| | | +--- org.hibernate:ejb3-persistence:1.0.2.GA
| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final
| | | | | | +--- org.hibernate:hibernate-core:3.5.6-Final -> 4.3.7.Final (*)
| | | | | | +--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
| | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | | | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| +--- org.hibernate:hibernate-entitymanager:4.3.7.Final
| | +--- org.hibernate:hibernate-core:4.3.7.Final
| | | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final
| | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final (*)
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| +--- org.hibernate:hibernate-validator:5.1.3.Final
| | | +--- org.hibernate:ejb3-persistence:1.0.2.GA
| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final
| | | | | | +--- org.hibernate:hibernate-core:3.5.6-Final -> 4.3.7.Final (*)
| | | | | | +--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
| | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | | | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| +--- org.hibernate:hibernate-entitymanager:4.3.7.Final
| | +--- org.hibernate:hibernate-core:4.3.7.Final
| | | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final
| | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate.common:hibernate-commons-annotations:4.0.5.Final (*)
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| +--- org.hibernate:hibernate-validator:5.1.3.Final
| | | +--- org.hibernate:ejb3-persistence:1.0.2.GA
| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final
| | | | | | +--- org.hibernate:hibernate-core:3.5.6-Final -> 4.3.7.Final (*)
| | | | | | +--- org.hibernate:hibernate-commons-annotations:3.2.0.Final
| | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | | | | | | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | | | | | | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | | | | | | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | | | | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
| | +--- org.hibernate:hibernate-core:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-entitymanager:4.2.0.Final -> 4.3.7.Final (*)
| | +--- org.hibernate:hibernate-annotations:3.5.6-Final (*)
| | +--- org.hibernate:hibernate-validator:4.2.0.Final -> 5.1.3.Final (*)
| | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta
| | | | +--- net.sf.beanlib:beanlib-hibernate:5.0.3beta任何指点都会有很大帮助。
谢谢,
稻谷
发布于 2014-12-09 17:53:49
尝试排除不需要的依赖项,并为所需的依赖项强制执行版本。例如:
configurations.all { conf ->
exclude group: 'org.hibernate', module: 'hibernate-annotations'
resolutionStrategy {
// Forces one verion among the project
force "org.hibernate.common:hibernate-commons-annotations:4.0.5.Final"
}
}https://stackoverflow.com/questions/27373725
复制相似问题