0

这是 Hibernate 关于批处理的代码示例:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

for ( int i=0; i<100000; i++ ) {
    Customer customer = new Customer(.....);
    session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();

在代码的开头,它使用.openSession()但是,当我编写代码时,我使用getCurreentSession(). 似乎它会产生org.hibernate.TransactionException: nested transactions not supported错误。

谁能解释为什么会这样?

4

1 回答 1

0

SessionFactory.openSession() 总是打开一个新会话,一旦你完成操作就必须关闭它。SessionFactory.getCurrentSession() 返回绑定到上下文的会话 - 您不需要关闭它。

于 2013-10-10T16:39:49.367 回答