对事务不熟悉一直没有用过,所以问题可能会比较 rz !! 如果我在一个 controller 中有一个方法,要去删除数据流程是:先调用关联表的 service 去删除关联变的数据, 然后再去调用主表的 service 删除主表的数据。这两个删除方法存在于不同的 service 接口中。这个时候我该如何做到在这个流程中如果某一个删除出现问题,让该流程中改变的数据进行回滚?(在不改变 service 结构的情况下)
对事务不熟悉一直没有用过,所以问题可能会比较 rz !! 如果我在一个 controller 中有一个方法,要去删除数据流程是:先调用关联表的 service 去删除关联变的数据, 然后再去调用主表的 service 删除主表的数据。这两个删除方法存在于不同的 service 接口中。这个时候我该如何做到在这个流程中如果某一个删除出现问题,让该流程中改变的数据进行回滚?(在不改变 service 结构的情况下)
|
dovmeSep 15, 2020
1
方法上加 @Transactional 注解
|
|
KevinBlandySep 15, 2020
2
互相调用的各个 Service 方法都添加 @Transactional 注解。
|
|
colincatSep 15, 2020
3
抽离出来一个单独 service 添加 @Transactional
|
|
git00llSep 15, 2020
4
两个 service 的方法上都加上事务注解,默认是 REQUIRED,调用的第二个 service 会共享第一个 service 的事务,即使用同一条 jdbc 连接。
|
|
5
|
|
1107139144Sep 15, 2020
7
把两个 service 里的方法整合在一个 service 。只 controller 里面调用一个 service
|
|
8
@1107139144 #7 这个 service 结构目前不能变动,不过按照附言里的方式手动回滚和提交事务已经实现了
|
|
chen19Sep 16, 2020
9
两个 Service 方法都添加 @Transactional 注解,应该就可以了
|
|
sdrzlyzSep 16, 2020
10
serviceA 直接调用 serviceB 的话,两者不会在同一个事务里。
如果是 spring 的话,serviceA 先 getBean(ServiceB),然后再调用 |