org.springframework.dao.support

## Class ChainedPersistenceExceptionTranslator

- java.lang.Object
- - org.springframework.dao.support.ChainedPersistenceExceptionTranslator

- All Implemented Interfaces:
    PersistenceExceptionTranslator

      public class ChainedPersistenceExceptionTranslator
      extends Object
      implements PersistenceExceptionTranslator

  Implementation of `PersistenceExceptionTranslator` that supports chaining, allowing the addition of PersistenceExceptionTranslator instances in order. Returns `non-null` on the first (if any) match.
  Since:
    2.0
  Author:
    Rod Johnson, Juergen Hoeller

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ChainedPersistenceExceptionTranslator()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addDelegate(PersistenceExceptionTranslator pet)` Add a PersistenceExceptionTranslator to the chained delegate list.
    `PersistenceExceptionTranslator[]` | `getDelegates()` Return all registered PersistenceExceptionTranslator delegates (as array).
    `DataAccessException` | `translateExceptionIfPossible(RuntimeException ex)` Translate the given runtime exception thrown by a persistence framework to a corresponding exception from Spring's generic DataAccessException hierarchy, if possible.

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

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

- - ### Constructor Detail

    - #### ChainedPersistenceExceptionTranslator

          public ChainedPersistenceExceptionTranslator()

  - ### Method Detail

    - #### addDelegate

          public final void addDelegate(PersistenceExceptionTranslator pet)

      Add a PersistenceExceptionTranslator to the chained delegate list.

    - #### getDelegates

          public final PersistenceExceptionTranslator[] getDelegates()

      Return all registered PersistenceExceptionTranslator delegates (as array).

    - #### translateExceptionIfPossible

          public DataAccessException translateExceptionIfPossible(RuntimeException ex)

      Description copied from interface: `PersistenceExceptionTranslator`
      Translate the given runtime exception thrown by a persistence framework to a corresponding exception from Spring's generic DataAccessException hierarchy, if possible.

      Do not translate exceptions that are not understand by this translator: for example, if coming from another persistence framework, or resulting from user code and unrelated to persistence.

      Of particular importance is the correct translation to DataIntegrityViolationException, for example on constraint violation. Implementations may use Spring JDBC's sophisticated exception translation to provide further information in the event of SQLException as a root cause.

      Specified by:
        `translateExceptionIfPossible` in interface `PersistenceExceptionTranslator`
      Parameters:
        `ex` - a RuntimeException thrown
      Returns:
        the corresponding DataAccessException (or `null` if the exception could not be translated, as in this case it may result from user code rather than an actual persistence problem)
      See Also:
        `DataIntegrityViolationException`, `SQLExceptionTranslator`