Spring MVC 4.2.2 и Hibernate 5.0.2 дают ошибку

Ниже приведены сведения о версии зависимостей в файле 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>

Я выбрал детали версии Hibernate из pom "spring-orm" и обнаружил, что Hibernate 5.0.2 совместим с Spring 4.2.2.

С теми же зависимостями в случае Spring core и Hibernate он работает нормально и дает желаемый результат. Но с интеграцией Spring MVC и Hibernate это дает следующую ошибку

Не удалось вызвать метод инициализации; вложенным исключением является java.lang.NoSuchMethodError: org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.(Lorg/hibernate/boot/spi/MetadataBuildingOptions;)V

Если нужна дополнительная информация, пожалуйста, укажите в разделе комментариев. Я предоставлю все детали конфигурации.

Заранее спасибо. :-)

Иерархия зависимостей


person Ashis Jena    schedule 12.11.2015    source источник
comment
попробуйте получить дерево зависимостей от maven ваших банок mvn dependency:tree -Dverbose -Dincludes=commons-collections, maven.apache.org/plugins/maven-dependency-plugin/examples/, могут возникнуть конфликты   -  person pezetem    schedule 12.11.2015
comment
На вашем снимке экрана видно, что в вашем дереве зависимостей есть как Hibernate core 5, так и 3.5.6. Это, вероятно, источник ваших проблем   -  person Bohuslav Burghardt    schedule 12.11.2015
comment
Да ... уже понял и разместил в разделе ответов. @pezetem и Богуслав, спасибо за ваш вклад   -  person Ashis Jena    schedule 12.11.2015
comment
Я предлагаю вам взглянуть на Spring IO. Это облегчает ручной выбор правильных версий зависимостей, предоставляя кураторский список версий зависимостей.   -  person geoand    schedule 12.11.2015


Ответы (1)


При удалении приведенных ниже зависимостей из pom.xml проблема была решена.

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.5.6-Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-commons-annotations</artifactId>
    <version>3.2.0.Final</version>
</dependency>

Из-за этих зависимостей возник конфликт разрешенных зависимостей (см. рисунок, прикрепленный к вопросу).

hibernate-annotations не требуется, это зависело от более старой версии hibernate-core и hibernate-commons-annotations

hibernate-commons-annotations (версия 5.0.2) присутствует в hibernate-core как зависимый jar-файл. Поэтому не требуется упоминать более старую версию в pom.xml.

person Ashis Jena    schedule 12.11.2015