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

Method Summary
`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`