首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们需要setRollbackOnly,而不仅仅是回滚事务?

为什么我们需要setRollbackOnly,而不仅仅是回滚事务?
EN

Stack Overflow用户
提问于 2020-06-02 13:39:15
回答 1查看 234关注 0票数 1

当我在项目中使用@Transactional时,我将超时设置为60秒。但是在进程运行超过60秒后,事务并没有立即回滚,它只是调用setRollbackOnly()方法将事务标记为仅回滚,当事务尝试提交时,它会检测到仅回滚标记并回滚。

我想知道为什么我们需要setRollbackOnly()?我们为什么不直接打电话给rollback()呢?这是JTA的设计吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-02 14:22:51

实际上,当当前事务中出现错误(即某些异常)时,会调用回滚。在这里,您手动设置超时60秒。

情况1:如果事务在时间内执行,则提交。

案例二:如果事务在时间内由于某些异常而出错,则直接调用rollback()

情况3:如果事务没有及时完成,则设置一个标志setRollbackOnly()

在此之后,事务也将执行,即使事务在60秒后成功,它也不会提交,因为有setRollbackOnly()标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62145563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档