Board logo

标题: Transaction silently rolled back because it has been marked as rollback-only [打印本页]

作者: xiexie    时间: 2024-1-22 14:51     标题: Transaction silently rolled back because it has been marked as rollback-only

出现这个错误的原因是事务双重回滚了。
模块间的相互调用时,被调用的模块有事务提交,在报错之后事务回滚,返回错误信息,
调用模块收到被调用模块的错误信息再一次进行事务回滚。
解决方法:在调用模块方法上挂起事务,不回滚事务
@Transactional(propagation = Propagation.NOT_SUPPORTED )
查询数据后对entity进行修改,数据库对应字段会自动更新。
解决方法如下:



使用BeanUtils
new一个新实体,将查询出来的实体复制给新实体,修改之后返回新实体对象。
BeanUtils.copyProperties(entity,newEntity);
使用@Transactional注解
在Dao层对应方法使用该注解,表示以非事务方式执行操作,如果当前存在事务,就把当前事务挂起(只查询)。
@Transactional(propagation=Propagation.NOT_SUPPORTED)


[ 本帖最后由 xiexie 于 2024-1-22 14:58 编辑 ]

图片附件: 20201124093217772.png (2024-1-22 14:56, 53.92 KB) / 该附件被下载次数 476
http://phpvi.com/attachment.php?aid=280&k=cdb0f7fcad800ab31b5847f18bdc90a1&t=1732653126



图片附件: dda83c0c32fd4384b4b635902c6d8ae5.png (2024-1-22 14:57, 42.63 KB) / 该附件被下载次数 456
http://phpvi.com/attachment.php?aid=281&k=dfc501d8055a901d9e5586bae8831d31&t=1732653126






欢迎光临 PHP开发笔记 (http://phpvi.com/) Powered by Discuz! 6.1.0