1. ホーム
  2. ジャワ

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.