Вы действительно используете несовместимые версии артефактов Hibernate, поскольку это можно проверить с помощью официальной матрицы совместимости Hibernate .Не полагайтесь на какое-то случайное учебное пособие, найденное в сети.
Но поскольку вы используете Maven, вам фактически не нужно объявлять все артефакты Hibernate, просто используйте транзитивные зависимости.Поэтому просто объявляет зависимость в hibernate-entitymanager
(особенно если вы не уверены в том, что делаете):
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.4.0.GA</version><!-- for JPA 1.0 -->
</dependency>
И удалите эти hibernate
, hibernate-core
, hibernate-annotations
, persistence-api
, slf4j
зависимости.
И если вы хотите изменить версию артефакта sfl4j-api
, который вы получаете транзитивно, вы должны сделать это в разделе управления зависимостями:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
</dependencyManagement>
На самом деле (и яизвините, чтобы сказать так) вся ваша помада в большом беспорядке, попробуйте потратить некоторое время на ее очистку.Для этого используйте mvn dependency:tree
(или какой-либо визуальный интерфейс, предлагаемый вашей IDE).
И позвольте мне настаивать, не полагайтесь на какое-то случайное (и неправильное) учебное пособие, найденное в сети, используйте транзитивную зависимость Mavenмеханизм.
PS: Начиная с Hibernate 3.5, различные проекты (Hibernate Annotation, Hibernate EntityManager) были объединены обратно в Hibernate Core, и их версии синхронизированы, что значительно упрощает управление версиями, даже для пользователей Maven.