首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HibernateException:没有配置CurrentSessionContext!春靴

HibernateException:没有配置CurrentSessionContext!春靴
EN

Stack Overflow用户
提问于 2015-11-10 17:00:19
回答 2查看 2.3K关注 0票数 1

我有以下配置:

代码语言:javascript
复制
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
代码语言:javascript
复制
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackageClasses = DemoApplication.class)
public class JpaConfig implements TransactionManagementConfigurer {

    @Value("${dataSource.driverClassName}")
    private String driver;
    @Value("${dataSource.url}")
    private String url;
    @Value("${dataSource.username}")
    private String username;
    @Value("${dataSource.password}")
    private String password;
    @Value("${hibernate.dialect}")
    private String dialect;
    @Value("${hibernate.hbm2ddl.auto}")
    private String hbm2ddlAuto;

    @Bean
    public DataSource configureDataSource() {
        HikariConfig config = new HikariConfig();
        config.setDriverClassName(driver);
        config.setJdbcUrl(url);
        config.setUsername(username);
        config.setPassword(password);

        return new HikariDataSource(config);
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean configureEntityManagerFactory() {
        LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
        entityManagerFactoryBean.setDataSource(configureDataSource());
        entityManagerFactoryBean.setPackagesToScan("com.dataart.cashmashine");
        entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());

        Properties jpaProperties = new Properties();
        jpaProperties.put(org.hibernate.cfg.Environment.DIALECT, dialect);
        jpaProperties.put(org.hibernate.cfg.Environment.HBM2DDL_AUTO, hbm2ddlAuto);
        entityManagerFactoryBean.setJpaProperties(jpaProperties);

        return entityManagerFactoryBean;
    }

    @Bean
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return new JpaTransactionManager();
    }
    @Bean
    public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
        return hemf.getSessionFactory();
    }

}

application.properties:

代码语言:javascript
复制
dataSource.driverClassName=org.postgresql.Driver
dataSource.url=jdbc:postgresql://localhost:5432/cash_mashine
dataSource.username=marc
dataSource.password=marc
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.hbm2ddl.auto=create-drop

在dao中,我写了以下行:

代码语言:javascript
复制
@Autowired
private SessionFactory sessionFactory;
@Override
public CreditCard findCard(String cardNumber) {
    Session currentSession = sessionFactory.getCurrentSession();

执行时

代码语言:javascript
复制
sessionFactory.getCurrentSession()

我看到以下错误:

原因: org.hibernate.HibernateException:没有配置CurrentSessionContext!

怎么解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2017-07-16 12:11:17

代码语言:javascript
复制
spring:
    jpa:
        properties:
            hibernate:
                current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext

上面的配置在application.yml中可以解决这个问题。

票数 2
EN

Stack Overflow用户

发布于 2015-11-10 23:54:49

尝试在正在调用DAO的公共服务方法中添加@Transactional。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33635453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档