Class SQLErrorCodeSQLExceptionTranslator

java.lang.Object
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator
All Implemented Interfaces:
SQLExceptionTranslator

public class SQLErrorCodeSQLExceptionTranslator extends AbstractFallbackSQLExceptionTranslator
Implementation of SQLExceptionTranslator that analyzes vendor-specific error codes. More precise than an implementation based on SQL state, but heavily vendor-specific.

This class applies the following matching rules:

  • Try custom translation implemented by any subclass. Note that this class is concrete and is typically used itself, in which case this rule doesn't apply.
  • Apply error code matching. Error codes are obtained from the SQLErrorCodesFactory by default. This factory loads a "sql-error-codes.xml" file from the class path, defining error code mappings for database names from database meta-data.
  • Fallback to a fallback translator. SQLStateSQLExceptionTranslator is the default fallback translator, analyzing the exception's SQL state only. Since Java 6 which introduces its own SQLException subclass hierarchy, we use SQLExceptionSubclassTranslator by default, which in turns falls back to Spring's own SQL state translation when not encountering specific subclasses.

The configuration file named "sql-error-codes.xml" is by default read from this package. It can be overridden through a file of the same name in the root of the class path (e.g. in the "/WEB-INF/classes" directory), as long as the Spring JDBC package is loaded from the same ClassLoader.

This translator is commonly used by default if a user-provided `sql-error-codes.xml` file has been found in the root of the classpath, as a signal to use this strategy. Otherwise, SQLExceptionSubclassTranslator serves as the default translator as of 6.0.

Author:
Rod Johnson, Thomas Risberg, Juergen Hoeller, Sam Brannen
See Also: