Java Persistence APIを使用して異常が発生した場合、Interstage永続性プロバイダはJPAの規約に従って例外をスローします。例外のcauseとして、oracle.toplink.essentialsで始まる例外をスローする場合があります。ここでは、この例外情報について説明します。
なお、ここで説明している例外が発生した場合、以下の対処が有効です。
ほとんどの例外は環境またはアプリケーションの問題を表しています。異常が発生しないように、必要に応じて環境を確認しアプリケーションを修正してください。
例外情報に記述されている例外クラス名を確認して、その例外クラスの説明で意味と対処方法を確認してください。
例外のスタックトレースが出力されている場合、スタックトレースに続けて「Caused by:」として別の例外が出力されていることがあります。根本原因を表していますので、こちらをあわせて確認してください。
スタックトレースから異常が発生したアプリケーションのクラス名、メソッド名や呼び出していたJava Persistence APIのクラスとメソッド名を特定できる場合があります。
注意
ここで説明しているすべての例外クラスは、java.lang.RuntimeExceptionクラスを継承しています。アプリケーションを修正する場合、oracle.toplink.essentialsで始まる例外クラスをキャッチする処理は行わないでください。
例外情報の形式
Exception [TOPLINK-{0}] ({1}): {2}
Exception Description: {3}
Internal Exception: {4}
Target Invocation Exception: {5}
Mapping: {6}
Descriptor: {7}
Error Code: {8}
Call: {9}
Query: {10}
可変情報
| 意味 |
---|---|
{0} | エラー番号 |
{1} | 内部情報 |
{2} | 例外クラス名 |
{3} | エラー情報 |
{4} | 本例外にラップされた例外情報 |
{5} | ラップされた例外クラスがjava.lang.reflect.InvocationTargetExceptionである場合、getTargetException()メソッドから返却されるターゲット例外の情報 |
{6} | 定義マッピング情報 |
{7} | 説明 |
{8} | {4}の例外クラスがjava.sql.SQLExceptionまたはjava.sql.SQLExceptionのサブクラスである場合、getErrorCodeメソッドから返却されるデータベースベンダー固有の例外コード。その他の場合、"000" |
{9} | SQL文の情報 |
{10} | 内部情報 |
情報がない項目はその行が出力されません。
SQLログ機能を有効にしていない場合はSQL文情報の行が出力されません。
例外スタックトレースの形式
JPA0020: Local Exception Stack:
{0}
Internal Exception Stack:
{1}
Target Invocation Exception Stack:
{2}
可変情報
| 意味 |
---|---|
{0} | 本例外の例外情報とスタックトレース |
{1} | 本例外にラップされた例外のスタックトレース |
{2} | ラップされた例外クラスがjava.lang.reflect.InvocationTargetExceptionである場合、getTargetException()メソッドから返却されるターゲット例外のスタックトレース |
情報がない項目は出力されません。
例外の説明
[意味]
Java並行性に違反しました。実行中のスレッドが割り込まれて、java.lang.InterruptedException例外がスローされた場合、この例外がラップされます。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
互換性のないデータの変換によって変換エラーが発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
エラー番号が3001であり、「Caused by:」にjava.lang.NullPointerExceptionが出力された場合、配列の要素にnullを指定しているjava.lang.Character[]型のフィールドをデータベースに格納しようとしている可能性があります。この場合、すべての要素に文字に変換できる値を指定して、再度実行してください。
[意味]
データベースのアクセス時に異常が発生しました。
[対処]
エラー情報やJDBCドライバから返却された例外情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
deployment descriptorファイルの定義内容に誤りがあります。または、定義した情報が不十分です。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
JPQLクエリ文の解析に失敗しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
エンティティマネージャファクトリまたはエンティティマネージャの作成に失敗しました。
[対処]
エラー情報や本例外にラップされた例外情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
エンティティマネージャファクトリまたはエンティティマネージャの初期化で異常が発生しました。
「Descriptor Exceptions:」の下にスローされたoracle.toplink.essentials.exceptions.DescriptorException例外の情報が出力されます。
上記以外の例外がスローされた場合、その例外情報が「Runtime Exceptions:」の下に出力されます。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
レコードが他トランザクションによって更新、またはテーブルから削除されました。
[対処]
レコードを再度検索し処理を再度実行してください。
[意味]
deployment descriptorファイルの読み込みに失敗しました。または、定義内容に誤り、または不足があります。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
JPQLクエリ文の解析に失敗しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
relationshipでFetchType.LAZYを定義したEntityクラスの準備処理で異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
トランザクション中に異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
JPAの実行環境やデータベース環境に不適当な箇所があります。または、永続化フィールドがInterstage永続性プロバイダで対応している型に適合していません。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
エラー番号が7027の場合、プライマリキー値の自動生成機能で使用するデータベースのシーケンスが作成されているか、確認してください。
エラー番号が7212の場合、java.util.Date型またはjava.util.Calendar型の永続化フィールドにTemporalTypeが定義されているか、確認してください。
エラー番号が7231の場合、一意制約違反が発生したため、テーブルのレコード、または挿入しようとしたEntityの値を確認してください。
[意味]
deployment descriptorファイル(persistence.xmlまたはマッピングファイル)の読み込みで異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
deployment descriptorファイル(persistence.xmlまたはマッピングファイル)のパーサ処理で異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。