diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcCursorItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcCursorItemReader.java index a514b1011..f5606b880 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcCursorItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcCursorItemReader.java @@ -178,7 +178,7 @@ public class JdbcCursorItemReader extends AbstractItemCountingItemStreamItemR preparedStatementSetter.setValues(preparedStatement); } this.rs = preparedStatement.executeQuery(); - handleWarnings(preparedStatement.getWarnings()); + handleWarnings(preparedStatement); } catch (SQLException se) { close(null); @@ -234,20 +234,26 @@ public class JdbcCursorItemReader extends AbstractItemCountingItemStreamItemR * * @param warnings the warnings object from the current statement. May be * null, in which case this method does nothing. + * @throws SQLException * * @see org.springframework.jdbc.SQLWarningException */ - private void handleWarnings(SQLWarning warnings) throws SQLWarningException { + private void handleWarnings(PreparedStatement pstmt) throws SQLWarningException, SQLException { if (ignoreWarnings) { - SQLWarning warningToLog = warnings; - while (warningToLog != null) { - log.debug("SQLWarning ignored: SQL state '" + warningToLog.getSQLState() + "', error code '" - + warningToLog.getErrorCode() + "', message [" + warningToLog.getMessage() + "]"); - warningToLog = warningToLog.getNextWarning(); + if (log.isDebugEnabled()) { + SQLWarning warningToLog = pstmt.getWarnings(); + while (warningToLog != null) { + log.debug("SQLWarning ignored: SQL state '" + warningToLog.getSQLState() + "', error code '" + + warningToLog.getErrorCode() + "', message [" + warningToLog.getMessage() + "]"); + warningToLog = warningToLog.getNextWarning(); + } } } - else if (warnings != null) { - throw new SQLWarningException("Warning not ignored", warnings); + else { + SQLWarning warnings = pstmt.getWarnings(); + if (warnings != null) { + throw new SQLWarningException("Warning not ignored", warnings); + } } }