spring boot 1.5.1.1版本与hibernate会话工厂创建有关的问题 创建Hibernate SessionFactory时出错
org.springframework.transaction.CannotCreateTransactionException:无法为事务打开Hibernate会话;嵌套的异常是java.lang.NoClassDefFoundError:org/hibernate/engine/transaction/spi/TransactionContext 我的POM文件 ============spring boot 1.5.1.1版本与hibernate会话工厂创建有关的问题 创建Hibernate SessionFactory时出错,spring,hibernate,spring-boot,Spring,Hibernate,Spring Boot,org.springframework.transaction.CannotCreateTransactionException:无法为事务打开Hibernate会话;嵌套的异常是java.lang.NoClassDefFoundError:org/hibernate/engine/transaction/spi/TransactionContext 我的POM文件 ============ <dependencies> <dependency>
<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>
解决方案是导入
org.springframework.orm.hibernate5.*代码>验证您的类路径上是否有正确的hibernate版本,并且没有冲突的版本,当不同的spring模块依赖或引入不同的可传递依赖时,可能会发生冲突。您的pom似乎很好,我认为您缺少transactionManager配置,请尝试添加HibernateTransactionManager
LocalSessionFactoryBean的包是什么?并向我们展示TransactionManager的创建方法。。对于imports,问题在于Spring和Hibernate版本之间的冲突。我使用的是org.springframework.orm.hibernate4.*,现在,我将该版本更改为org.springframework.orm.hibernate5.*。问题解决了。但是在SpringBoot中,我们没有在pom.xml文件中提供任何依赖版本的详细信息,这难道不是一个bug吗。
@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;
}