spring boot 1.5.1.RELEASE 问题与休眠会话工厂创建有关
Posted
技术标签:
【中文标题】spring boot 1.5.1.RELEASE 问题与休眠会话工厂创建有关【英文标题】:spring boot 1.5.1.RELEASE issue with hibernate session factory creation 【发布时间】:2017-02-04 17:01:11 【问题描述】:创建 Hibernate SessionFactory 时出错
org.springframework.transaction.CannotCreateTransactionException:无法为事务打开 Hibernate Session;嵌套异常是 java.lang.NoClassDefFoundError: org/hibernate/engine/transaction/spi/TransactionContext
我的 POM 文件
============
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
SessionFactory 就是这样创建的
@Bean
public LocalSessionFactoryBean sessionFactory()
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource());
sessionFactoryBean.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN);
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
sessionFactoryBean.setHibernateProperties(hibernateProperties);
return sessionFactoryBean;
【问题讨论】:
验证您的类路径中是否有正确的 hibernate 版本,并且您没有冲突的版本,当各种 spring 模块依赖或引入不同的传递依赖时,可能会发生这种情况。 你的 pom 似乎没问题,我认为你缺少 transactionManager 配置尝试添加HibernateTransactionManager
LocalSessionFactoryBean的封装是什么?并向我们展示 TransactionManager 创建方法.. 使用导入
这是 Spring 和 Hibernate 版本之间的冲突问题。我正在使用 org.springframework.orm.hibernate4.*; ,现在我把版本改成了org.springframework.orm.hibernate5.*; .问题已解决。但这不是 Spring Boot 中的错误,我们没有在 pom.xml 文件中提供任何依赖版本详细信息。
【参考方案1】:
解决方案是导入org.springframework.orm.hibernate5.*;
【讨论】:
以上是关于spring boot 1.5.1.RELEASE 问题与休眠会话工厂创建有关的主要内容,如果未能解决你的问题,请参考以下文章
springboot+mybatis HelloWorld示例
为啥 Spring Boot 应用程序 pom 同时需要 spring-boot-starter-parent 和 spring-boot-starter-web?