public class SQLStateSQLExceptionTranslator extends AbstractFallbackSQLExceptionTranslator
SQLExceptionTranslator
implementation that analyzes the SQL state in
the SQLException
based on the first two digits (the SQL state "class").
Detects standard SQL state values and well-known vendor-specific SQL states.
Not able to diagnose all problems, but is portable between databases and
does not require special initialization (no database vendor detection, etc.).
For more precise translation, consider SQLErrorCodeSQLExceptionTranslator
.
SQLException.getSQLState()
,
SQLErrorCodeSQLExceptionTranslator
Modifier and Type | Field and Description |
---|---|
private static java.util.Set<java.lang.String> |
BAD_SQL_GRAMMAR_CODES |
private static java.util.Set<java.lang.String> |
CONCURRENCY_FAILURE_CODES |
private static java.util.Set<java.lang.String> |
DATA_ACCESS_RESOURCE_FAILURE_CODES |
private static java.util.Set<java.lang.String> |
DATA_INTEGRITY_VIOLATION_CODES |
private static java.util.Set<java.lang.String> |
TRANSIENT_DATA_ACCESS_RESOURCE_CODES |
logger
Constructor and Description |
---|
SQLStateSQLExceptionTranslator() |
Modifier and Type | Method and Description |
---|---|
protected DataAccessException |
doTranslate(java.lang.String task,
java.lang.String sql,
java.sql.SQLException ex)
Template method for actually translating the given exception.
|
private java.lang.String |
getSqlState(java.sql.SQLException ex)
Gets the SQL state code from the supplied
exception . |
buildMessage, getFallbackTranslator, setFallbackTranslator, translate
private static final java.util.Set<java.lang.String> BAD_SQL_GRAMMAR_CODES
private static final java.util.Set<java.lang.String> DATA_INTEGRITY_VIOLATION_CODES
private static final java.util.Set<java.lang.String> DATA_ACCESS_RESOURCE_FAILURE_CODES
private static final java.util.Set<java.lang.String> TRANSIENT_DATA_ACCESS_RESOURCE_CODES
private static final java.util.Set<java.lang.String> CONCURRENCY_FAILURE_CODES
protected DataAccessException doTranslate(java.lang.String task, java.lang.String sql, java.sql.SQLException ex)
AbstractFallbackSQLExceptionTranslator
The passed-in arguments will have been pre-checked. Furthermore, this method
is allowed to return null
to indicate that no exception match has
been found and that fallback translation should kick in.
doTranslate
in class AbstractFallbackSQLExceptionTranslator
task
- readable text describing the task being attemptedsql
- SQL query or update that caused the problem (may be null
)ex
- the offending SQLException
SQLException
;
or null
if no exception match foundprivate java.lang.String getSqlState(java.sql.SQLException ex)
exception
.
Some JDBC drivers nest the actual exception from a batched update, so we might need to dig down into the nested exception.
ex
- the exception from which the SQL state
is to be extracted