Java Spring-Hibernate-NoClassDefFoundError CurrentSessionContext

Java Spring-Hibernate-NoClassDefFoundError CurrentSessionContext,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我正在尝试使用spring boot设置hibernate,但在启动时遇到以下错误: java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_60] at java.lang.ClassLoader.defineClass(ClassLoader.

我正在尝试使用spring boot设置hibernate,但在启动时遇到以下错误:

      java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext
    at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_60]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) ~[na:1.8.0_60]
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_60]
我的启动代码

@SpringBootApplication
@EnableTransactionManagement
public class Application extends SpringBootServletInitializer {

    static Logger log = Logger.getLogger(Application.class.getName());


    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }


    @Bean
    public HibernateJpaSessionFactoryBean sessionFactory() {
        return new HibernateJpaSessionFactoryBean();
    }


    @PostConstruct
    public void test() {
        //nothing atm.
    }
}
应用程序属性

spring.datasource.url= {working_url}
spring.datasource.username={usr}
spring.datasource.password={pass}
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update


spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate3.SpringSessionContext
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
依赖关系

我环顾了一下互联网,发现有几篇帖子也有同样的问题,但解决方案没有帮助


有人知道吗

通过更改application.properties文件中的这一行解决了此问题

spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate3.SpringSessionContext

但是迪纳姆先生提出了一个很好的观点,所以我把它改为

spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
(省略属性引发的错误:org.hibernate.hibernateeexception:未配置CurrentSessionContext!)

有人能解释一下第三种选择应该是怎样的和为什么的吗?:)

我的交易现在是否由Spring 100%管理? 会话连接如下

@Autowired
public CarpoolDOA(SessionFactory sf) {
    this.sf=sf;
}

这将打破正常的Spring集成。。。所以这不是一个解决方案。如果您正在使用已设置该属性的Spring boot,请将其删除。
@Autowired
public CarpoolDOA(SessionFactory sf) {
    this.sf=sf;
}