0
我正在擴展Spring Batch的ItemListenerSupport
並覆蓋onProcessError()
以處理錯誤狀態。我的問題是,我希望能夠作爲我的處理的一部分寫入數據庫,但它似乎被包含在批處理的事務中並被回滾。有沒有辦法讓它做回滾之前,並允許onProcessError()
更新數據庫?或者還有其他方式我應該處理這個?Spring批處理失敗偵聽器回滾
我正在擴展Spring Batch的ItemListenerSupport
並覆蓋onProcessError()
以處理錯誤狀態。我的問題是,我希望能夠作爲我的處理的一部分寫入數據庫,但它似乎被包含在批處理的事務中並被回滾。有沒有辦法讓它做回滾之前,並允許onProcessError()
更新數據庫?或者還有其他方式我應該處理這個?Spring批處理失敗偵聽器回滾
在文檔中顯示它的權利。需要添加我自己的交易。
請記住,如果您的偵聽器在onError()方法中執行任何操作,它將位於將要回退的事務中。如果您需要在onError()方法內使用事務資源(如數據庫),請考慮爲該方法添加聲明式事務(有關詳細信息,請參閱Spring Core參考指南),併爲其傳播屬性指定值REQUIRES_NEW。
您確實可以驗證您正在進行的更改嗎?可能是您的事務正在回滾,並且您沒有可用的有效數據庫會話,您的異常會被持久性提供程序吞噬。 – JamesENL 2015-03-09 02:55:44
是的,我們可以看到更新語句,然後是2個回滾,最後是2個提交,這在當時顯然不會做任何事情。 – Nixx 2015-03-17 15:04:44