发新话题
打印

Transaction silently rolled back because it has been marked as rollback-only

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 编辑 ]

TOP

发新话题