在调用session.save()时非法尝试将代理与两个打开的Session相关联

时间:2018-06-29 06:24:19

标签: java hibernate bulkinsert hibernate-criteria

我正在尝试将批量数据保存到表中 在保存的同时,我面临的问题是

非法尝试将代理与两个打开的会话相关联

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

        for (Object obj : ObjectList) {
            session.save(obj );
        }
        transaction.commit();
        session.close();
     }

我在更新记录时看到了这个问题,但是现在有解决方案了。

1 个答案:

答案 0 :(得分:1)

在这里您可以刷新一批插入物并释放内存:

有关更多信息,您可以在batch processing.上查阅休眠文档

    int count=0;

     for (Object obj : ObjectList) {

         session.save(obj );
         //20, same as default the JDBC batch size
         if ( ++count % 20 == 0 ) {
             session.flush();
             session.clear();
         }
    }
    transaction.commit();
    session.close();