Package org.springframework.jdbc.support

# Interface SQLExceptionTranslator

All Known Implementing Classes:
  `AbstractFallbackSQLExceptionTranslator`, `SQLErrorCodeSQLExceptionTranslator`, `SQLExceptionSubclassTranslator`, `SQLStateSQLExceptionTranslator`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface SQLExceptionTranslator
Strategy interface for translating between `SQLExceptions` and Spring's data access strategy-agnostic `DataAccessException` hierarchy.

Implementations can be generic (for example, using `SQLState` codes for JDBC) or wholly proprietary (for example, using Oracle error codes) for greater precision.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  - `DataAccessException`

## Method Summary

Modifier and Type
Method
Description
`org.springframework.dao.DataAccessException`
`translate(String task, String sql, SQLException ex)`
Translate the given `SQLException` into a generic `DataAccessException`.

## Method Details

### translate

@Nullable org.springframework.dao.DataAccessException translate(String task, @Nullable String sql, SQLException ex)
Translate the given `SQLException` into a generic `DataAccessException`.

The returned DataAccessException is supposed to contain the original `SQLException` as root cause. However, client code may not generally rely on this due to DataAccessExceptions possibly being caused by other resource APIs as well. That said, a `getRootCause() instanceof SQLException` check (and subsequent cast) is considered reliable when expecting JDBC-based access to have happened.

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()`