Spring 在 JdbcBatchItemWriter 中批量调用 getNextException()
Spring batch call getNextException() in JdbcBatchItemWriter
我们有一个带有 spring 引导和 spring 批处理的小批量项目。
我们使用的是 JdbcBatchItemWriter
db2 数据库。但是,当发生错误时,我们收到以下错误消息:
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
}
我们有一个带有 spring 引导和 spring 批处理的小批量项目。
我们使用的是 JdbcBatchItemWriter
db2 数据库。但是,当发生错误时,我们收到以下错误消息:
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
}