Exception in thread "main" org.hibernate.HibernateException: No Session found for current thread

背景

使用spring框架整合Hibernate的时候,通过getCurrentSession()获得与线程绑定的session时,可能会遇到no session found for current thread的错误;


原因:调用getCurrentSession()之前,没有调用SessionFactory.openSession()开启session。


解决方案分两种情况

1、如果没有配置TranactionManager事务,那么调用getCurrentSession()之前,先调用SessionFactory.openSession();

我这个bean是配置版本的,不是注解版本的;所以有ser和get方法

Exception in thread

Exception in thread  

Exception in thread  

2、如果配置了TranactionManager事务

2.1、在需要声明事务的方法上面@Transactional
 

@Transactional
    public void purchase(String username, String isbn) {
        // 1.根据isbn来查询价格和库存
        int price = bookShopDaoImpl.findBookPriceByIsbn(isbn);
        // 2.更新库存
        bookShopDaoImpl.updateBookStock(isbn);
        // 3.扣除账户余额
        bookShopDaoImpl.updateUserAccount(username, price);

    }

2.2、在配置文件中使得事务注解生效

	
	

 

你可能感兴趣的:(java之ssh框架专栏)