私はJava Webアプリケーションを開発中です。アプリケーションは、RESTスタイルのバックエンドです。私はWebフレームワークとしてspring mvcを使用しており、永続性のためにJPA/Hibernateを使用しています。データベースはmysqlです。DataIntegrityViolationExceptionを処理して特定の原因を取得する方法
私はデータベースにテーブルを持っています。ここにはidを持つ単純なテキスト値が格納されています。だから私はそこに2つの列を持っています。しかし、私はそれらのテキスト値をユニークにしたい。既にSQLでこれを設定します。
誰かが同じ文字列を複数回挿入しようとするとどうなるかを処理するunittestを書いています。 Springは私にDataIntegrityViolationExceptionを返します。根本原因はMySQLIntegrityConstraintViolationExceptionです。根本原因から、私はsqlErrorCodeを取得できます。
これを処理するより良い方法はありますか?私はmysqlexceptionに依存したくないので、私のコードにエラーコードがあります。
本当に原因を調べる必要がありますか? 2列の表のデータ整合性制約違反は他にはありませんか?また、そうした場合、データレイヤーに近い翻訳メカニズムを使用して、これをカスタム例外として再現することができます。そのため、関連するコードは特定のデータストアタイプまたはライブラリに依存する必要はありません。 – zapl
現時点で翻訳メカニズムが私の解決策でした。しかし、私は他にはあり得ないというあなたの権利を推測します。 – Patrick