Вы используете Spring Boot 2.1.3, который зависит от Spring 5.1. Линия Spring 5.x работает только с Hibernate 5.x, поддержка более ранних версий прекращена.
Зависимость spring-boot-starter-data-jpa
уже включает в себя зависимость hibernate-entitymanager
в версии, которая работает с другими зависимостями.
Другое дело, что вы смешиваете jar / модули из разных версий Spring, вы смешиваете 5.1.x и 3.0.6, что всегда является проблемой, поскольку они совершенно несовместимы. Кроме того, эта зависимость также включена в spring-boot-starter-data-jpa
.
Итак, короче говоря, ваши зависимости немного беспорядочные.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<!-- Dependencies for SQLite -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.25.2</version>
</dependency>
<dependency>
<groupId>net.kemitix</groupId>
<artifactId>sqlite-dialect</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>
ПРИМЕЧАНИЕ: Spring Boot также может управлять версией H2, поэтому с нее можно удалить тег version
.
Вы используете XML, однако я настоятельно рекомендую отказаться от него и вместо этого использовать JPA. С текущим состоянием JPA больше нет необходимости использовать обычный Hibernate. И если вам действительно нужно, вы можете использовать EntityManager.unwrap(Session.class)
для получения основного сеанса.
Дополнительным преимуществом является то, что теперь вы можете использовать автоконфигурацию для JPA из Spring Boot. Свойства в вашем hibernate.properties
должны идти в application.properties
под правильными именами.
spring.datasource.url= # your jdbc.url value
spring.datasource.username = # your jdbc.username value
spring.datasource.password = # your jdbc.password value
spring.jpa.database-platform = # your hibernate.dialect value
spring.jpa.show-sql = # your hibernate.show_sql value
ПРИМЕЧАНИЕ: Вам не нужно указывать свойство driver-classname
, поскольку Spring Boot и JDBC обнаружат его на основе заданного jdbc-url
.
СОВЕТ: Убедитесь, что ваш аннотированный класс @SpringBootApplication
находится в пакете com.test.market
, как рекомендовано командой Spring Boot, поэтому он обнаружит все ваши классы, включая аннотированный @Entity
классы.
Ваш код, возможно, вам придется изменить, чтобы использовать EntityManager
вместо SessionFactory
и Session
, но это должно быть незначительное изменение.