Spring 在 JdbcBatchItemWriter 中批量调用 getNextException()

Spring batch call getNextException() in JdbcBatchItemWriter

我们有一个带有 spring 引导和 spring 批处理的小批量项目。

我们使用的是 JdbcBatchItemWriterdb2 数据库。但是,当发生错误时,我们收到以下错误消息:

Caused by: com.ibm.db2.jcc.am.BatchUpdateException: [jcc][t4][102][10040][3.63.123] Batch failure. The batch was submitted, but at least one exception occurred on an individual member of the batch. Use getNextException() to retrieve the exceptions for specific batched elements. ERRORCODE=-4229, SQLSTATE=null

不幸的是,要获得明确的错误消息,我需要 spring 来调用 getNextException() 以获得有关准确异常的详细信息。但是,我检查了 class SQLErrorCodeSQLExceptionTranslator 的代码,看起来 Spring 并没有为此提供一些功能。

有没有人在不重写 class SQLErrorCodeSQLExceptionTranslator 的情况下找到解决这个问题的方法?

这可以通过检查返回的异常列表来处理:getAllFailureExceptions(),在 jobLauncher.run() 之后结束。

 List<Throwable> exceptions = execution.getAllFailureExceptions();
                for (Throwable throwable : exceptions) {
                   //code to handle nested exceptions
                 }