【问题标题】:Spring - Hibernate - NoClassDefFoundError CurrentSessionContextSpring - 休眠 - NoClassDefFoundError CurrentSessionContext
【发布时间】:2016-03-17 19:07:13
【问题描述】:

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

      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.
    }
}

application.properties

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

依赖关系

我浏览了互联网,发现一些帖子有同样的问题,但解决方案没有帮助。

有人知道吗?

【问题讨论】:

    标签: java spring hibernate spring-boot


    【解决方案1】:

    通过更改 application.properties 文件中的这一行来解决它

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

    spring.jpa.properties.hibernate.current_session_context_class=thread
    

    但是 M. Deinum 提出了一个很好的观点,所以我把它改成了

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

    (省略属性引发的错误:org.hibernate.HibernateException:未配置 CurrentSessionContext!)

    谁能解释一下如何以及为什么它应该是第三个选项? :)

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

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

    【讨论】:

    • 这将破坏正确的 Spring 集成......所以它不是一个修复。您正在使用已设置该属性的 Spring boot,请将其删除。
    猜你喜欢
    • 2013-12-14
    • 2014-09-27
    • 1970-01-01
    • 2023-03-17
    • 2014-02-02
    • 1970-01-01
    • 2012-07-30
    • 2020-11-13
    相关资源
    最近更新 更多