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 Details

    • logger

      protected final Log logger
      Logger available to subclasses.
  • Constructor Details

    • AbstractFallbackSQLExceptionTranslator

      public AbstractFallbackSQLExceptionTranslator()
  • Method Details

    • setFallbackTranslator

      public void setFallbackTranslator(@Nullable SQLExceptionTranslator fallback)
      Override the default SQL state fallback translator (typically a SQLStateSQLExceptionTranslator).
    • getFallbackTranslator

      @Nullable public SQLExceptionTranslator getFallbackTranslator()
      Return the fallback exception translator, if any.
    • translate

      @Nullable public org.springframework.dao.DataAccessException translate(String task, @Nullable 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 - the SQL query or update that caused the problem (if known)
      ex - the offending SQLException
      Returns:
      the DataAccessException wrapping the SQLException, or null if no specific translation could be applied
      See Also:
      • NestedRuntimeException.getRootCause()
    • doTranslate

      @Nullable protected abstract org.springframework.dao.DataAccessException doTranslate(String task, @Nullable 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 - the SQL query or update that caused the problem (if known)
      ex - the offending SQLException
      Returns:
      the DataAccessException, wrapping the SQLException; or null if no exception match found
    • buildMessage

      protected String buildMessage(String task, @Nullable 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
      ex - the offending SQLException
      Returns:
      the message String to use