Skip to content

Commit 34562d3

Browse files
committed
Merge branch '6.2.x'
2 parents aeed3c9 + 5471961 commit 34562d3

File tree

3 files changed

+22
-23
lines changed

3 files changed

+22
-23
lines changed

spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLExceptionSubclassTranslator.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -80,43 +80,43 @@ public SQLExceptionSubclassTranslator() {
8080

8181
if (sqlEx instanceof SQLTransientException) {
8282
if (sqlEx instanceof SQLTransientConnectionException) {
83-
return new TransientDataAccessResourceException(buildMessage(task, sql, sqlEx), sqlEx);
83+
return new TransientDataAccessResourceException(buildMessage(task, sql, sqlEx), ex);
8484
}
8585
if (sqlEx instanceof SQLTransactionRollbackException) {
8686
if (SQLStateSQLExceptionTranslator.indicatesCannotAcquireLock(sqlEx.getSQLState())) {
87-
return new CannotAcquireLockException(buildMessage(task, sql, sqlEx), sqlEx);
87+
return new CannotAcquireLockException(buildMessage(task, sql, sqlEx), ex);
8888
}
89-
return new PessimisticLockingFailureException(buildMessage(task, sql, sqlEx), sqlEx);
89+
return new PessimisticLockingFailureException(buildMessage(task, sql, sqlEx), ex);
9090
}
9191
if (sqlEx instanceof SQLTimeoutException) {
92-
return new QueryTimeoutException(buildMessage(task, sql, sqlEx), sqlEx);
92+
return new QueryTimeoutException(buildMessage(task, sql, sqlEx), ex);
9393
}
9494
}
9595
else if (sqlEx instanceof SQLNonTransientException) {
9696
if (sqlEx instanceof SQLNonTransientConnectionException) {
97-
return new DataAccessResourceFailureException(buildMessage(task, sql, sqlEx), sqlEx);
97+
return new DataAccessResourceFailureException(buildMessage(task, sql, sqlEx), ex);
9898
}
9999
if (sqlEx instanceof SQLDataException) {
100-
return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), sqlEx);
100+
return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), ex);
101101
}
102102
if (sqlEx instanceof SQLIntegrityConstraintViolationException) {
103103
if (SQLStateSQLExceptionTranslator.indicatesDuplicateKey(sqlEx.getSQLState(), sqlEx.getErrorCode())) {
104-
return new DuplicateKeyException(buildMessage(task, sql, sqlEx), sqlEx);
104+
return new DuplicateKeyException(buildMessage(task, sql, sqlEx), ex);
105105
}
106-
return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), sqlEx);
106+
return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), ex);
107107
}
108108
if (sqlEx instanceof SQLInvalidAuthorizationSpecException) {
109-
return new PermissionDeniedDataAccessException(buildMessage(task, sql, sqlEx), sqlEx);
109+
return new PermissionDeniedDataAccessException(buildMessage(task, sql, sqlEx), ex);
110110
}
111111
if (sqlEx instanceof SQLSyntaxErrorException) {
112-
return new BadSqlGrammarException(task, (sql != null ? sql : ""), sqlEx);
112+
return new BadSqlGrammarException(task, (sql != null ? sql : ""), ex);
113113
}
114114
if (sqlEx instanceof SQLFeatureNotSupportedException) {
115-
return new InvalidDataAccessApiUsageException(buildMessage(task, sql, sqlEx), sqlEx);
115+
return new InvalidDataAccessApiUsageException(buildMessage(task, sql, sqlEx), ex);
116116
}
117117
}
118118
else if (sqlEx instanceof SQLRecoverableException) {
119-
return new RecoverableDataAccessException(buildMessage(task, sql, sqlEx), sqlEx);
119+
return new RecoverableDataAccessException(buildMessage(task, sql, sqlEx), ex);
120120
}
121121

122122
// Fallback to Spring's own SQL state translation...

spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,35 +131,35 @@ public class SQLStateSQLExceptionTranslator extends AbstractFallbackSQLException
131131
logger.debug("Extracted SQL state class '" + classCode + "' from value '" + sqlState + "'");
132132
}
133133
if (BAD_SQL_GRAMMAR_CODES.contains(classCode)) {
134-
return new BadSqlGrammarException(task, (sql != null ? sql : ""), sqlEx);
134+
return new BadSqlGrammarException(task, (sql != null ? sql : ""), ex);
135135
}
136136
else if (DATA_INTEGRITY_VIOLATION_CODES.contains(classCode)) {
137137
if (indicatesDuplicateKey(sqlState, sqlEx.getErrorCode())) {
138-
return new DuplicateKeyException(buildMessage(task, sql, sqlEx), sqlEx);
138+
return new DuplicateKeyException(buildMessage(task, sql, sqlEx), ex);
139139
}
140-
return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), sqlEx);
140+
return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), ex);
141141
}
142142
else if (PESSIMISTIC_LOCKING_FAILURE_CODES.contains(classCode)) {
143143
if (indicatesCannotAcquireLock(sqlState)) {
144-
return new CannotAcquireLockException(buildMessage(task, sql, sqlEx), sqlEx);
144+
return new CannotAcquireLockException(buildMessage(task, sql, sqlEx), ex);
145145
}
146-
return new PessimisticLockingFailureException(buildMessage(task, sql, sqlEx), sqlEx);
146+
return new PessimisticLockingFailureException(buildMessage(task, sql, sqlEx), ex);
147147
}
148148
else if (DATA_ACCESS_RESOURCE_FAILURE_CODES.contains(classCode)) {
149149
if (indicatesQueryTimeout(sqlState)) {
150-
return new QueryTimeoutException(buildMessage(task, sql, sqlEx), sqlEx);
150+
return new QueryTimeoutException(buildMessage(task, sql, sqlEx), ex);
151151
}
152-
return new DataAccessResourceFailureException(buildMessage(task, sql, sqlEx), sqlEx);
152+
return new DataAccessResourceFailureException(buildMessage(task, sql, sqlEx), ex);
153153
}
154154
else if (TRANSIENT_DATA_ACCESS_RESOURCE_CODES.contains(classCode)) {
155-
return new TransientDataAccessResourceException(buildMessage(task, sql, sqlEx), sqlEx);
155+
return new TransientDataAccessResourceException(buildMessage(task, sql, sqlEx), ex);
156156
}
157157
}
158158

159159
// For MySQL: exception class name indicating a timeout?
160160
// (since MySQL doesn't throw the JDBC 4 SQLTimeoutException)
161161
if (sqlEx.getClass().getName().contains("Timeout")) {
162-
return new QueryTimeoutException(buildMessage(task, sql, sqlEx), sqlEx);
162+
return new QueryTimeoutException(buildMessage(task, sql, sqlEx), ex);
163163
}
164164

165165
// Couldn't resolve anything proper - resort to UncategorizedSQLException.

spring-jdbc/src/test/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslatorTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,7 @@ private void assertTranslation(SQLException ex, @Nullable Class<?> dataAccessExc
181181
static void assertTranslation(DataAccessException dae, SQLException ex, Class<?> dataAccessExceptionType) {
182182
assertThat(dae).as("Specific translation must not result in null").isNotNull();
183183
assertThat(dae).as("Wrong DataAccessException type returned").isExactlyInstanceOf(dataAccessExceptionType);
184-
assertThat(dae.getCause()).as("The exact same original SQLException must be preserved").isSameAs(
185-
ex instanceof BatchUpdateException bue ? bue.getNextException() : ex);
184+
assertThat(dae.getCause()).as("The exact same original SQLException must be preserved").isSameAs(ex);
186185
}
187186

188187
static BatchUpdateException buildBatchUpdateException(@Nullable String sqlState, SQLException next) {

0 commit comments

Comments
 (0)