在我的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. 爲什麼可以在Grails的Spring Security中忽略@Secured?
- 5. UIView可以「忽略」界面方向嗎?
- 6. Haskell可以忽略Ints與整數嗎?
- 7. SUMPRODUCT可以忽略空白單元嗎?
- 8. 我可以忽略全局.gitignore嗎?
- 9. Stanford Parser可以忽略大小寫嗎?
- 10. Automapper可以忽略void方法嗎?
- 11. 可以忽略返回值嗎?
- 12. Grails 2.0.3忽略可空限制
- 13. 忽略@Id註釋的Grails
- 14. 當計算忽略時,git可以忽略嵌套的.gitignore文件嗎?
- 15. 我可以忽略cmake中的關鍵詞DEFINED嗎?
- 16. eclipse中的Emma覆蓋工具可以忽略某些行嗎?
- 17. 可以忽略管道中的警告嗎?
- 18. 我可以忽略代碼中的「twitter bootstrap is deprecated」警告嗎?
- 19. list.files()可以忽略R中不包含模式的路徑嗎?
- 20. 我可以在Realm的線程中使用忽略屬性嗎?
- 21. 我可以讓Postgresql忽略交易中的錯誤嗎?
- 22. can bazaar可以忽略分支中已存在的文件嗎?
- 23. Resharper可以忽略聲明語句中的空格嗎?
- 24. 我可以忽略Windows SVN中的單個文件嗎?
- 25. 我們可以忽略NSMutableURLRequest中的ssl驗證嗎?
- 26. 我可以忽略HTML中鏈接元素的rel屬性嗎?
- 27. 可以rpmbuild忽略buildroot中的文件嗎?
- 28. Can SimpleTemplate可以忽略模板文件中的變量嗎?
- 29. 您可以忽略Resharper中的特定冗餘限定符嗎?
- 30. 如何讓Grails忽略.DS_Store
這是什麼意思是事務回滾沒有從你身邊做。 –
我隨機得到這個問題,任何暫時的問題都可能導致事務回滾,這不是我主要關心的問題。這將在下次登錄時修復,但我不希望此異常觸發異常時生成的電子郵件。 –
發生什麼事是,您的嵌套方法調用之一引發未經檢查的異常,這是導致事務被標記爲僅回滾。然後在哪裏調用你的代碼捕獲異常。但事務已標記爲僅回滾,並且您看到此UnexpectedRollbackException錯誤。您可以確保,未經檢查的異常不會跨越事務性方法,並在此之前捕獲它。否則,或者讓原始異常一直傳播起來..否則只是忽略這個UnexpectedRollbackException –