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



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






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