0

Try/Catch ブロック内に、Hibernate DB Save 操作を呼び出して行を挿入するメソッドがあります。

DB の問題があっても (たとえば、NULL を非 NULL 列に挿入した場合)、メソッドは正常に完了します。その後、Hibernates はトランザクションを「フラッシュ」または完了しようとしますが、そのときにエラーがスローされます。

メールの送信など、他のことを行うためにメソッドが正常に完了することに依存しているため、これはコードの流れを台無しにします。メソッドを呼び出した後、エラーが発生していないという仮定に基づいて電子メールを送信します (そうでなければ、コード フローから Catch ブロックに放り出されていたでしょうが、これは発生していません)。

この状況に対処する方法を知っている人はいますか?

4

1 に答える 1

4

簡単な答えは、単純に呼び出すことSession.flush()であり、保留中の SQL が実行され、その時点で潜伏している可能性のある SQL 例外が発生します。

SQL 例外に頼ってエラーを検出するのではなく、より広い範囲で、アプリケーション レベルでデータを検証するためのオプションを検討することをお勧めします。もちろん、どちらの方法にも一長一短があります。

于 2012-05-08T18:20:03.047 に答える