1. 程式人生 > >建立非同步執行緒時,Hibernate報No Session異常

建立非同步執行緒時,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);
}