在我的grails应用程序中,我经常得到org.springframework.transaction.HeuristicCompletionException:启发式完成:结果状态回滚;嵌套异常是org.springframework.transaction.UnexpectedRollbackException:事务已回滚,因为它已标记为只回滚。我以某种方式发现,如果在由@Transactional注释的方法内发生任何类型的异常,并在具有其自己的@Transactional的方法内部调用,则会发生这种情况。我的查询是否可以简单地捕获并忽略此异常?Grails中的HeuristicCompletionException可以忽略吗?
1
A
回答
1
对此我有一个解决方法,正如Sudhir在评论中所建议的,我可以在其中一个方法中复制启发式完成问题,并发现为了不回滚服务使用的现有事务,我们为每个方法创建新的事务为:
@Transactional
Class MyService {
@Transactional(propagation = PROPAGATION.REQUIRES_NEW)
def myMethod(){
throw new Exception();
}
}
注释@Transactional(传播= PROPAGATION.REQUIRES_NEW)这将创建一个新的事务处理的方法和暂停现有的事务。由于这会在每次执行方法时创建新的事务,这肯定会对大型多线程应用程序造成性能问题,所以我通过处理服务类中每个方法中的所有可能的异常来缓解这种情况。这会更好。
相关问题
- 1. 可以忽略DbUpdateConcurrencyException吗?
- 2. Grails忽略hibernate.cfg.xml
- 3. 忽略SVN忽略...可能吗?
- 4. UIView可以“忽略”界面方向吗?
- 5. Haskell可以忽略Ints与整数吗?
- 6. SUMPRODUCT可以忽略空白单元吗?
- 7. Stanford Parser可以忽略大小写吗?
- 8. 可以忽略返回值吗?
- 9. 忽略@Id注释的Grails
- 10. 当计算忽略时,git可以忽略嵌套的.gitignore文件吗?
- 11. 您可以忽略Resharper中的特定冗余限定符吗?
- 12. 可以忽略管道中的警告吗?
- 13. 我可以在Realm的线程中使用忽略属性吗?
- 14. can bazaar可以忽略分支中已存在的文件吗?
- 15. 我可以忽略Windows SVN中的单个文件吗?
- 16. Can SimpleTemplate可以忽略模板文件中的变量吗?
- 17. 我可以忽略cmake中的关键词DEFINED吗?
- 18. eclipse中的Emma覆盖工具可以忽略某些行吗?
- 19. 我可以让Postgresql忽略交易中的错误吗?
- 20. 可以rpmbuild忽略buildroot中的文件吗?
- 21. list.files()可以忽略R中不包含模式的路径吗?
- 22. 忽略Grails日志配置
- 23. 是否可以忽略TextBox?
- 24. 将数据加载到表中时可以忽略行吗?
- 25. 我可以在JDBC中忽略或取消警告吗?
- 26. 可以在Composer配置中忽略子依赖项吗?
- 27. 可以配置或修改JQPrint以忽略复选框吗?
- 28. Grails g:include可以做吗?
- 29. 我可以告诉findbugs忽略我无法添加的类吗?
- 30. oozie可以忽略缺少的输入文件吗?
这是什么意思是事务回滚没有从你身边做。 –
我随机得到这个问题,任何暂时的问题都可能导致事务回滚,这不是我主要关心的问题。这将在下次登录时修复,但我不希望此异常触发异常时生成的电子邮件。 –
发生什么事是,您的嵌套方法调用之一引发未经检查的异常,这是导致事务被标记为仅回滚。然后在哪里调用你的代码捕获异常。但事务已标记为仅回滚,并且您看到此UnexpectedRollbackException错误。您可以确保,未经检查的异常不会跨越事务性方法,并在此之前捕获它。否则,或者让原始异常一直传播起来..否则只是忽略这个UnexpectedRollbackException –