实体方法 事务的使用原创
2人赞赏了该文章
415次浏览
编辑于2021年05月28日 11:26:25
例子:
A方法事务属性: Supports B方法标准的Save: Required
A方法 集合循环批量调用 Save 想实现 出现错误的数据回滚,然后继续逻辑。
出现就是两条数据,第一条报错了,第二条正常。在数据库两条都存在。
解决:Save方法不能直接调用,而是通过工厂类获取服务来调用,这样就不是同一个对象了。
同一个类中方法调用方法事务不生效。
借鉴博客大佬回答:
Spring采用动态代理(AOP)实现对bean的管理和切片,它为我们的每个class生成一个代理对象。只有在代理对象之间进行调用时,可以触发切面逻辑。而在同一个class中,方法B调用方法A,调用的是原对象的方法,而不通过代理对象。所以Spring无法切到这次调用,也就无法通过注解保证事务性了。
(记录一下,BUG太难了,如有不对欢迎指出)
赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读