1. ホーム
  2. ジャワ

DataIntegrityViolationException (データ整合性違反例外)

2022-03-02 06:54:02

今日、コードを書いていて、ふと、実際にDaoが操作しているときに例外をキャッチしている人がいる場所を発見して、とても驚いたのですが、それは

 トライ {
            personDAO.addAdvertiser(person)を実行します。
        } catch(DataIntegrityViolationExceptionのe){。
            logger.error("person DataIntegrityViolationException", e);

}



これは、非常に普通の内部データへの操作を追加し、プロセスが書き込む必要はありません、非常に普通の@Sqlのパスパラメータ形式ですが、ちょうど知らない、なぜエラーをスローしますし、今日、テーブルの構造内部のデータベースを表示するには、このです


これは、一意性制約、つまり、テーブルmytest1で、追加または変更するときに、キーと同じ(名前、値)と、同じにすることはできません、同じ場合は、データベースがエラーをスローします、あなたは一意性制約に違反したと言って、この時点で、我々はこの例外をキャッチすれば、いくつかの操作、いくつかの値を返す、または何かを行うことができます。そうすると、値を取り出さなくても判断できるように、その

また、SpringのDAOの例外階層を添付します。


<テーブル

例外事項

投げるタイミング

CleanupFailureDataAccessException 操作は正常に実行されたが、データベースリソースを解放する際に例外が発生した(例:コネクションのクローズ)。 DataAccessResourceFailureException (データアクセスリソース失敗例外) データアクセスリソースが完全に失敗した(例:データベースへの接続ができない DataIntegrityViolationException データの挿入または更新時に、一意性制約に違反するなどして整合性が損なわれた。 DataRetrievalFailureException (データ検索失敗例外) キーワードで行が見つからないなど、一部のデータが検出できません。 DeadlockLoserDataAccessException 現在の操作はデッドロックのため失敗しました。 IncorrectUpdateSemanticsDataAccessException Update中に想定外の事態が発生した(レコード数が想定を超えた場合など)。この例外が発生した場合、実行中のトランザクションはロールバックされません。 InvalidDataAccessApiusageException(無効データアクセスアピウスエイジ例外 データアクセスのためのJAVA APIが正しく使用されていない。例えば、実行前にコンパイルする必要があるクエリがコンパイルに失敗した場合。 invalidDataAccessResourceUsageException (無効データアクセスリソース使用例外) データアクセスリソースの使用方法が間違っている(間違ったSQL構文でリレーショナルデータベースにアクセスした場合など)。 OptimisticLockingFailureException 最適化されたロッキングの失敗。これは、ORM ツールまたはユーザーの DAO 実装によって投げられます。 typemismatchDataAccessException (タイプミスマッチ・データ・アクセス例外) Java型とデータ型の不一致。例えば、数値型のデータベース・フィールドにString型を挿入しようとした場合。 UncategorizedDataAccessException エラーが発生したが、より具体的な例外に分類することができなかった。

<テーブル

例外事項

投げるタイミング

CleanupFailureDataAccessException 操作は正常に実行されたが、データベースリソースを解放する際に例外が発生した(例:コネクションのクローズ)。 DataAccessResourceFailureException (データアクセスリソース失敗例外) データアクセスリソースが完全に失敗した(例:データベースへの接続ができない DataIntegrityViolationException データの挿入または更新時に、一意性制約に違反するなどして整合性が損なわれた。 DataRetrievalFailureException(データ検索失敗例外 キーワードで行が見つからないなど、検出できないデータがあります。 DeadlockLoserDataAccessException 現在の操作はデッドロックのため失敗しました。 IncorrectUpdateSemanticsDataAccessException Update中に想定外の事態が発生した(レコード数が想定を超えた場合など)。この例外が発生した場合、実行中のトランザクションはロールバックされません。 InvalidDataAccessApiusageException(無効データアクセスアピウスエイジ例外 データアクセスのためのJAVA APIが正しく使用されていない。例えば、実行前にコンパイルする必要があるクエリがコンパイルに失敗した場合。 invalidDataAccessResourceUsageException (無効データアクセスリソース使用例外) データアクセスリソースの使用方法が間違っている(間違ったSQL構文でリレーショナルデータベースにアクセスした場合など)。 OptimisticLockingFailureException 最適化されたロッキングの失敗。これは、ORM ツールまたはユーザーの DAO 実装によって投げられます。 typemismatchDataAccessException (タイプミスマッチ・データ・アクセス例外) Java型とデータ型の不一致。例えば、数値型のデータベース・フィールドにString型を挿入しようとした場合。 UncategorizedDataAccessException エラーが発生したが、より具体的な例外に分類することができなかった。