广告
返回顶部
首页 > 资讯 > 数据库 >Mybatis Plus插入数据事务控制常见异常、报错问题,No value for key,Transaction is already completed,ResultSet is from UP
  • 442
分享到

Mybatis Plus插入数据事务控制常见异常、报错问题,No value for key,Transaction is already completed,ResultSet is from UP

mybatismysql 2023-09-20 12:09:30 442人浏览 薄情痞子
摘要

场景: 在手动控制事务中,使用全局事务管理器对象,正常插入数据、或批量、或使用线程池开启多线程批量插入数据,都有可能出现以下错误 错误一: No value for key [xxx] bound to thread 解决: 1、由于手

场景:
在手动控制事务中,使用全局事务管理器对象,正常插入数据、或批量、或使用线程池开启多线程批量插入数据,都有可能出现以下错误

错误一:

No value for key [xxx] bound to thread

解决:
1、由于手动控制事务释放资源时,需要开启一个统一管理的全局事务
2、此错误是声明式事务和手动控制事务相冲突,如果在代码中有涉及到手动控制注入数据源事务管理Bean对象 DataSourceTransactionManager,如果出现上述问题,请开启声明事务:@Transactional(rollbackFor = {Exception.class})
3、如果方法内部调用的保存或删除方法也走spring事务管理、或者内部方法开启的有新的事务,那么内部方法也要开启声明式事务:@Transactional(rollbackFor = {Exception.class})

错误二:

ResultSet is from UPDATE. No Data

解决:
1、首先检查sql语法是否正确,保证SQL语句没问题
2、有可能是同一时间进入了多条SQL语句,再释放结果集对象的时候冲突,需要考虑线程安全问题,在需要同步的代码对象加上synchronized 同步关键字,例如:

        sysUserAddressList.forEach(obj -> {            synchronized (obj) {                save(obj);            }        });


3、若是在JDBC工具类中将Connection,PreparedStatement或ResultSet定义成全局静态变量,则要考虑线程安全问题

错误三:

Transaction is already completed - do not call commit or rollback more than once per transaction

 解决:
1、手动控制事务,提示很明显,已完成的事务,不要多次提交或回滚
2、在提交或回滚事务之前,先判断该事务状态是否完成即可:

                transactionStatuses.forEach(status -> {                    if (!status.isCompleted()) {                        dataSourceTransactionManager.commit(status);                    }                });

来源地址:https://blog.csdn.net/hkl_Forever/article/details/129117265

您可能感兴趣的文档:

--结束END--

本文标题: Mybatis Plus插入数据事务控制常见异常、报错问题,No value for key,Transaction is already completed,ResultSet is from UP

本文链接: https://www.lsjlt.com/news/412872.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作