创建异步线程时,Hibernate报No Session异常

SessionFactory的getCurrentSession并不能保证在没有当前Session的情况下会自动创建一个新的,Session是和线程相关联的,当另起一个新的异步线程时getCurrentSession会找不到当前的Session,所以需要手动创建Session并开启事务进行提交。

注意:

1、使用openSession开启一个新的Session而不是获取当前Session

2、使用Session开启事务(session.begainTransaction()),而不是transaction.begin()然后TransactionSynchronizationManager.bindResource(this.sessionFactory, session)绑定进行事务管理最后transaction.commit();

代码如下:

try {
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    //TODO 要做的事。。。。
    。
    。
    。
    session.getTransaction().commit();
    if (session != null) {
        session.close();
    }
}catch (Exception e){
    log.error("保存异常",e);
}

猜你喜欢

转载自blog.csdn.net/qq_39229914/article/details/86063199
今日推荐