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) / 该附件被下载次数 207
http://phpvi.com/attachment.php?aid=280&k=ad2124aab3a9cbd6702a85f04004ee08&t=1715927060



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






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