关于使用@Transactional后如何在代码中部分绕过回滚

temjack 2019-01-10 10:12:22
实际问题是这样的:
一个方法在添加@Transactional(rollbackFor=Exception.class) 注解后在抛出异常的时候是可以回滚的,但方法里有部分语句(获取数据库里的某种ID,自增的,不需要回滚,保证唯一性),有没有方法可以将这部分语句排除出回滚而不影响其他的?
...全文
789 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2019-01-11
  • 打赏
  • 举报
回复 1
引用 3 楼 temjack 的回复:
[quote=引用 2 楼 stacksoverflow 的回复:] 不需要回滚的用新方法封起来,新方法声明不需要事务或者新建事务 @Transactional(propagation=Propagation.NOT_SUPPORTED) 或者 @Transactional(propagation=Propagation.REQUIRES_NEW)
没用,封装了在事务里引用依然会回滚[/quote] 封装到新类的新方法里,然后在新类的新方法声明Propagation.REQUIRES_NEW,参考一下这两篇文章 https://www.cnblogs.com/abcwt112/p/5340897.html https://blog.csdn.net/catoop/article/details/53482960
鸣鸣Amadues 2019-01-10
  • 打赏
  • 举报
回复
你要明白事务性(Transaction)具有原子性,意思就是事务里的东西要么都回滚,要么都提交。如果可以部分回滚,部分提交,那就不叫事务性了。所以你理清业务需求,把需要回滚和不需要回滚的内容分开来做吧。
temjack 2019-01-10
  • 打赏
  • 举报
回复
引用 2 楼 stacksoverflow 的回复:
不需要回滚的用新方法封起来,新方法声明不需要事务或者新建事务 @Transactional(propagation=Propagation.NOT_SUPPORTED) 或者 @Transactional(propagation=Propagation.REQUIRES_NEW)
没用,封装了在事务里引用依然会回滚
stacksoverflow 2019-01-10
  • 打赏
  • 举报
回复
不需要回滚的用新方法封起来,新方法声明不需要事务或者新建事务 @Transactional(propagation=Propagation.NOT_SUPPORTED) 或者 @Transactional(propagation=Propagation.REQUIRES_NEW)
十八道胡同 2019-01-10
  • 打赏
  • 举报
回复
自己写回滚逻辑 应该可以满足这个要求

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧