java - 在调用 session.save() 时非法尝试将代理与两个打开的会话相关联
问题描述
我正在尝试将批量数据保存到表中,同时保存我面临的问题是
非法尝试将代理与两个打开的会话相关联
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
for (Object obj : ObjectList) {
session.save(obj );
}
transaction.commit();
session.close();
}
我在更新记录时看到了这个问题,但现在正在保存是否有任何解决方案。
解决方案
在这里您可以刷新一批插入并释放内存:
有关更多信息,您可以参考 hibernate doc on 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();
推荐阅读
- authentication - 为 Solrcloud 8.8.2 配置 JWT 身份验证
- android - ionic ngx-dropzone 隐藏拍照IOS的选项
- date - Perl:从预先格式化的日期时间字符串中获取周数
- android - 构建发布后,Flutter 应用程序卡在白屏上
- javascript - 如何从 Firebase 存储下载 pdf
- django - 在基于 Django 的 GraphQL API 中为 postgres 表创建全局搜索字段的最佳方法?
- reactjs - vscode tsconfig 值保持重置为默认值
- javascript - 如何将数据存储在可从任何地方访问的 nextjs 中
- reactjs - 在 React 应用程序中使用标准类是不好的做法吗?
- azure-devops - 如何选择 google play 应用签名首选项以轻松将其集成到 Azure DevOps 发布管道中