【发布时间】:2016-02-13 13:30:49
【问题描述】:
以下是 pom.xml 上的依赖版本详细信息
<!-- spring -->
<org.springframework-version>4.2.2.RELEASE</org.springframework-version>
<org.springframework.data-version>1.11.0.RELEASE</org.springframework.data-version>
<!-- hibernate -->
<org.hibernate.hibernate-core>5.0.2.Final</org.hibernate.hibernate-core>
<org.hibernate.hibernate-annotations>3.5.6-Final</org.hibernate.hibernate-annotations>
<org.hibernate.hibernate-commons-annotations>3.2.0.Final</org.hibernate.hibernate-commons-annotations>
<org.hibernate.hibernate-validator>5.2.2.Final</org.hibernate.hibernate-validator>
我从“spring-orm”pom 中挑选了 Hibernate 版本详细信息,发现 Hibernate 5.0.2 与 Spring 4.2.2 兼容
在 Spring 核心 和 Hibernate 的情况下具有相同的依赖关系,它可以正常工作并提供所需的结果。 但是通过 Spring MVC 和 Hibernate 集成,它给出了以下错误
init 方法调用失败;嵌套异常是 java.lang.NoSuchMethodError: org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.(Lorg/hibernate/boot/spi/MetadataBuildingOptions;)V
如果需要任何进一步的信息,请在评论部分提出。我将提供整个配置细节。
提前致谢。 :-)
【问题讨论】:
-
尝试从你的 jars
mvn dependency:tree -Dverbose -Dincludes=commons-collections, maven.apache.org/plugins/maven-dependency-plugin/examples/… 的 maven 获取依赖树,可能会看到冲突 -
您的屏幕截图显示您的依赖关系树中同时拥有 Hibernate core 5 和 3.5.6。这可能是你问题的根源
-
是的...已经弄清楚并发布在答案部分。 @pezetem 和 Bohuslav,感谢您的投入
-
我建议你看看Spring IO。它通过提供一个精选的依赖版本列表来减轻手动选择正确依赖版本的痛苦
标签: java spring hibernate spring-mvc spring-orm