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

版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/85274771

背景

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


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


解决方案分两种情况

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

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、在配置文件中使得事务注解生效

	<!--使得注解生效 -->
	<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/85274771