DataIntegrityViolationExceptionの取り扱いについて
2022-03-02 13:17:13
I. 解決方法
データベースを更新するときに、プロジェクト内のorg.springframework.dao.DataIntegrityViolationException、もちろんコンソールが直接この例外を報告した場合、問題の解決策はおそらく私がブログを書くのに十分ではありません。
まず、この例外が何を表しているのかを見てみましょう。
この例外は、データベースを更新(アップデート、インサート)する際に、新しいデータが主キーの重複など整合性に違反していることを意味し、ここで私が問題にしているのは
データベースのidフィールドがセルフインクリメントに設定されておらず、デフォルト値も設定されていないため、挿入時にこの例外が発生します。
この問題の解決策は簡単で、データベースのidフィールドをセルフインクリメントになるように修正すれば完璧です。
この問題が発生した場合、更新されるフィールドのデータとデータベースの対応するフィールドのプロパティに矛盾がないか、更新されるデータ自体に問題がないかを確認する必要があります。
II. いくつかの考え
次のポイントは、そもそもなぜこの例外が発見されなかったのかということです。簡単に言うと、この例外はカプセル化されており、ビジネス層での多くの例外は、処理にhandlerExceptionを使って直接キャッチし、カプセル化されたエラーメッセージに戻り、この例外をキャッチして処理した後はコンソールを表示できないからである。
/**
Define resolution of exceptions that are not absorbed by the business controller layer
*/
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object handlerException(HttpServletRequest request, Exception ex) {
Map
This is the main reason, followed by the encapsulated error message from the front end should be able to directly realize that it is in this Exception that is not handled by the business layer, should not waste time debugging other functions, and when debugging again in the future I hope to think about the problem from the whole picture of the project, rather than grabbing the wrong one.
This is the main reason, followed by the encapsulated error message from the front end should be able to directly realize that it is in this Exception that is not handled by the business layer, should not waste time debugging other functions, and when debugging again in the future I hope to think about the problem from the whole picture of the project, rather than grabbing the wrong one.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例