实体方法 事务的使用原创
金蝶云社区-云社区用户WWxe8705
云社区用户WWxe8705
2人赞赏了该文章 415次浏览 未经作者许可,禁止转载编辑于2021年05月28日 11:26:25

例子:

A方法事务属性: Supports  B方法标准的Save: Required

A方法 集合循环批量调用 Save 想实现 出现错误的数据回滚,然后继续逻辑。

出现就是两条数据,第一条报错了,第二条正常。在数据库两条都存在。
解决:Save方法不能直接调用,而是通过工厂类获取服务来调用,这样就不是同一个对象了。

同一个类中方法调用方法事务不生效。

借鉴博客大佬回答:

  1. Spring采用动态代理(AOP)实现对bean的管理和切片,它为我们的每个class生成一个代理对象。只有在代理对象之间进行调用时,可以触发切面逻辑。而在同一个class中,方法B调用方法A,调用的是原对象的方法,而不通过代理对象。所以Spring无法切到这次调用,也就无法通过注解保证事务性了。

(记录一下,BUG太难了,如有不对欢迎指出)


图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!