आपको BatchUpdateException
नहीं मिलता है , क्योंकि आप उपयोग कर सकते हैं SQLErrorCodeSQLExceptionTranslator
jdbcTemplate
. में , जो BatchUpdateException
. को संभालता है रों एक विशेष तरीके से
:
if (sqlEx instanceof BatchUpdateException && sqlEx.getNextException() != null) {
SQLException nestedSqlEx = sqlEx.getNextException();
if (nestedSqlEx.getErrorCode() > 0 || nestedSqlEx.getSQLState() != null) {
sqlEx = nestedSqlEx;
}
}
इसके बारे में एक समस्या है:
यदि आप SQLStateSQLExceptionTranslator
:
jdbcTemplate.setExceptionTranslator(new SQLStateSQLExceptionTranslator());
फिर आपको BatchUpdateException
मिलेगा एक cause
. के रूप में :
try {
// ...
} catch (DataAccessException e) {
Throwable cause = e.getCause();
logger.info("cause instanceof BatchUpdateException = {}", cause instanceof BatchUpdateException);
}
लेकिन ध्यान दें कि postgresql jdbc ड्राइवर के मामले में BatchUpdateException#getUpdateCounts()
इसमें EXECUTE_FAILED
केवल, इस तथ्य के बावजूद कि कुछ पंक्ति को सफलतापूर्वक सम्मिलित किया जा सकता है।
देखें यह मुद्दा