org.springframework.jdbc.support

## Class AbstractFallbackSQLExceptionTranslator

- java.lang.Object
- - org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator

All Implemented Interfaces:
  SQLExceptionTranslator

Direct Known Subclasses:
  SQLErrorCodeSQLExceptionTranslator, SQLExceptionSubclassTranslator, SQLStateSQLExceptionTranslator

    public abstract class AbstractFallbackSQLExceptionTranslator
    extends Object
    implements SQLExceptionTranslator

Base class for `SQLExceptionTranslator` implementations that allow for fallback to some other `SQLExceptionTranslator`.

Since:
  2.5.6
Author:
  Juergen Hoeller

### Field Summary

Fields
`protected Log` `logger` Logger available to subclasses

### Constructor Summary

Constructors
Constructor and Description
`AbstractFallbackSQLExceptionTranslator()`

### Method Summary

Methods
`protected String` `buildMessage(String task, String sql, SQLException ex)` Build a message `String` for the given `SQLException`.
`protected abstract DataAccessException` `doTranslate(String task, String sql, SQLException ex)` Template method for actually translating the given exception.
`SQLExceptionTranslator` `getFallbackTranslator()` Return the fallback exception translator, if any.
`void` `setFallbackTranslator(SQLExceptionTranslator fallback)` Override the default SQL state fallback translator (typically a `SQLStateSQLExceptionTranslator`).
`DataAccessException` `translate(String task, String sql, SQLException ex)` Pre-checks the arguments, calls `doTranslate(java.lang.String, java.lang.String, java.sql.SQLException)`, and invokes the `fallback translator` if necessary.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### logger

    protected final Log logger

Logger available to subclasses

### Constructor Detail

#### AbstractFallbackSQLExceptionTranslator

    public AbstractFallbackSQLExceptionTranslator()

### Method Detail

#### setFallbackTranslator

    public void setFallbackTranslator(SQLExceptionTranslator fallback)

Override the default SQL state fallback translator (typically a `SQLStateSQLExceptionTranslator`).

#### getFallbackTranslator

    public SQLExceptionTranslator getFallbackTranslator()

Return the fallback exception translator, if any.

#### translate

    public DataAccessException translate(String task,
                                String sql,
                                SQLException ex)

Pre-checks the arguments, calls `doTranslate(java.lang.String, java.lang.String, java.sql.SQLException)`, and invokes the `fallback translator` if necessary.

Specified by:
  `translate` in interface `SQLExceptionTranslator`
Parameters:
  `task` - readable text describing the task being attempted
  `sql` - SQL query or update that caused the problem (may be `null`)
  `ex` - the offending `SQLException`
Returns:
  the DataAccessException, wrapping the `SQLException`
See Also:
  `NestedRuntimeException.getRootCause()`

#### doTranslate

    protected abstract DataAccessException doTranslate(String task,
                                  String sql,
                                  SQLException ex)

Template method for actually translating the given exception.

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.

Parameters:
  `task` - readable text describing the task being attempted
  `sql` - SQL query or update that caused the problem (may be `null`)
  `ex` - the offending `SQLException`
Returns:
  the DataAccessException, wrapping the `SQLException`; or `null` if no exception match found

#### buildMessage

    protected String buildMessage(String task,
                      String sql,
                      SQLException ex)

Build a message `String` for the given `SQLException`.

To be called by translator subclasses when creating an instance of a generic `DataAccessException` class.

Parameters:
  `task` - readable text describing the task being attempted
  `sql` - the SQL statement that caused the problem (may be `null`)
  `ex` - the offending `SQLException`
Returns:
  the message `String` to use