クラス SQLErrorCodeSQLExceptionTranslator
java.lang.ObjectSE
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator
- 実装済みのインターフェース一覧:
SQLExceptionTranslator
ベンダー固有のエラーコードを分析する
SQLExceptionTranslator の実装。SQL 状態に基づいた実装よりも正確ですが、ベンダー固有のものです。このクラスは、次の一致ルールを適用します。
- サブクラスで実装されたカスタム変換を試してください。このクラスは具象であり、通常はそれ自体が使用されることに注意してください。この場合、この規則は適用されません。
- エラーコードの一致を適用します。エラーコードは、デフォルトで SQLErrorCodesFactory から取得されます。このファクトリは、クラスパスから "sql-error-codes.xml" ファイルをロードし、データベースメタデータからデータベース名のエラーコードマッピングを定義します。
- フォールバックトランスレータへのフォールバック。
SQLStateSQLExceptionTranslatorはデフォルトのフォールバックトランスレータであり、例外の SQL 状態のみを分析します。独自のSQLExceptionサブクラス階層を導入する Java 6 は、デフォルトでSQLExceptionSubclassTranslatorを使用します。これは、特定のサブクラスに遭遇しない場合、Spring 独自の SQL 状態変換にフォールバックします。
"sql-error-codes.xml" という名前の構成ファイルは、デフォルトではこのパッケージから読み取られます。Spring JDBC パッケージが同じ ClassLoader からロードされている限り、クラスパスのルート (たとえば、"/WEB-INF/classes" ディレクトリ) にある同じ名前のファイルを使用して上書きできます。
このトランスレーターは通常、ユーザーが提供した `sql-error-codes.xml` ファイルがクラスパスのルートで見つかった場合に、この戦略を使用するシグナルとしてデフォルトで使用されます。それ以外の場合は、SQLExceptionSubclassTranslator が 6.0 のデフォルトのトランスレータとして機能します。
- 作成者:
- Rod Johnson, Thomas Risberg, Juergen Hoeller, Sam Brannen
- 関連事項:
フィールドのサマリー
クラス AbstractFallbackSQLExceptionTranslator から継承されたフィールド
loggerコンストラクター概要
コンストラクターコンストラクター説明JavaBean として使用するコンストラクター。指定されたデータベース製品名の SQL エラーコードトランスレータを作成します。SQLErrorCodeSQLExceptionTranslator(DataSourceSE dataSource) 指定された DataSource の SQL エラーコードトランスレータを作成します。これらのエラーコードを指定して、SQLErrorCode トランスレータを作成します。方法の概要
修飾子と型メソッド説明protected @Nullable DataAccessExceptioncreateCustomException(StringSE task, @Nullable StringSE sql, SQLExceptionSE sqlEx, ClassSE<?> exceptionClass) CustomSQLErrorCodesTranslation定義の特定の例外クラスに基づいて、カスタムDataAccessExceptionを作成します。protected @Nullable DataAccessExceptioncustomTranslate(StringSE task, @Nullable StringSE sql, SQLExceptionSE sqlEx) 使用すべきではありません。protected @Nullable DataAccessExceptiondoTranslate(StringSE task, @Nullable StringSE sql, SQLExceptionSE ex) 指定された例外を実際に変換するためのテンプレートメソッド。このトランスレータが使用するエラーコードを返します。voidsetDatabaseProductName(StringSE dbName) このトランスレーターのデータベース製品名を設定します。voidsetDataSource(DataSourceSE dataSource) このトランスレーターの DataSource を設定します。void変換に使用するカスタムエラーコードを設定します。
コンストラクターの詳細
SQLErrorCodeSQLExceptionTranslator
public SQLErrorCodeSQLExceptionTranslator()JavaBean として使用するコンストラクター。SqlErrorCodes または DataSource プロパティを設定する必要があります。SQLErrorCodeSQLExceptionTranslator
指定された DataSource の SQL エラーコードトランスレータを作成します。このコンストラクターを呼び出すと、DataSource から接続が取得され、メタデータが取得されます。- パラメーター:
dataSource- メタデータを検索し、使用可能なエラーコードを確立するために使用する DataSource- 関連事項:
SQLErrorCodeSQLExceptionTranslator
指定されたデータベース製品名の SQL エラーコードトランスレータを作成します。このコンストラクターを呼び出すと、DataSource から接続を取得してメタデータを取得することが回避されます。- パラメーター:
dbName- エラーコードエントリを識別するデータベース製品名- 関連事項:
SQLErrorCodeSQLExceptionTranslator
これらのエラーコードを指定して、SQLErrorCode トランスレータを作成します。接続を使用してデータベースのメタデータ検索を実行する必要はありません。- パラメーター:
sec- エラーコード
メソッドの詳細
setDataSource
このトランスレーターの DataSource を設定します。このプロパティを設定すると、DataSource から接続が取得され、メタデータが取得されます。
- パラメーター:
dataSource- メタデータを検索し、使用可能なエラーコードを確立するために使用する DataSource- 関連事項:
setDatabaseProductName
このトランスレーターのデータベース製品名を設定します。このプロパティを設定すると、DataSource から接続を取得してメタデータを取得することを回避できます。
- パラメーター:
dbName- エラーコードエントリを識別するデータベース製品名- 関連事項:
setSqlErrorCodes
変換に使用するカスタムエラーコードを設定します。- パラメーター:
sec- 使用するカスタムエラーコード
getSqlErrorCodes
このトランスレータが使用するエラーコードを返します。通常、DataSource を介して決定されます。- 関連事項:
doTranslate
protected @Nullable DataAccessException doTranslate(StringSE task, @Nullable StringSE sql, SQLExceptionSE ex) クラスからコピーされた説明:AbstractFallbackSQLExceptionTranslator指定された例外を実際に変換するためのテンプレートメソッド。渡された引数は事前にチェックされています。さらに、このメソッドは
nullを返し、例外の一致が見つからなかったこと、およびフォールバック変換が開始されることを示すことができます。- 次で指定:
- クラス
AbstractFallbackSQLExceptionTranslatorのdoTranslate - パラメーター:
task- 試行されているタスクを説明する読み取り可能なテキストsql- 問題を引き起こした SQL クエリまたは更新 (既知の場合)ex- 問題のあるSQLException- 戻り値:
SQLExceptionをラップする DataAccessException。例外一致が見つからない場合はnull
customTranslate
@DeprecatedSE(since="6.1") protected @Nullable DataAccessException customTranslate(StringSE task, @Nullable StringSE sql, SQLExceptionSE sqlEx) 使用すべきではありません。サブクラスはこのメソッドをオーバーライドして、SQLExceptionSE からDataAccessExceptionへのカスタムマッピングを試みることができます。- パラメーター:
task- 試行されているタスクを説明する読み取り可能なテキストsql- 問題を引き起こした SQL クエリまたは更新 (nullの場合があります)sqlEx- 問題のある SQLException- 戻り値:
- カスタム変換が適用されない場合は
null、それ以外の場合はカスタム変換の結果であるDataAccessException。この例外には、ネストされた根本原因としてsqlExパラメーターを含める必要があります。この実装は常にnullを返します。つまり、トランスレータは常にデフォルトのエラーコードにフォールバックします。
createCustomException
protected @Nullable DataAccessException createCustomException(StringSE task, @Nullable StringSE sql, SQLExceptionSE sqlEx, ClassSE<?> exceptionClass) CustomSQLErrorCodesTranslation定義の特定の例外クラスに基づいて、カスタムDataAccessExceptionを作成します。- パラメーター:
task- 試行されているタスクを説明する読み取り可能なテキストsql- 問題を引き起こした SQL クエリまたは更新 (nullの場合があります)sqlEx- 問題のある SQLExceptionexceptionClass-CustomSQLErrorCodesTranslation定義で定義されている、使用する例外クラス- 戻り値:
- カスタム例外を作成できなかった場合は
null、それ以外の場合は結果のDataAccessException。この例外には、ネストされた根本原因としてsqlExパラメーターを含める必要があります。 - 関連事項:
AbstractFallbackSQLExceptionTranslator.setCustomTranslator(SQLExceptionTranslator)を推奨