私は、Try/Catchブロック内にHibernate DB保存操作を呼び出して行を挿入するメソッドを持っています。HibernateがDB例外をキャッチするほど高速でフラッシュしない
DBの問題がある場合でもメソッドは正常に完了します(NULL以外の列にNULLを挿入する場合など)。その後、ある時点で、Hibernateはトランザクションを "フラッシュ"または完了しようとします。そのときにエラーがスローされます。
これは、私のメソッドが他のことを成功させることに成功しているため、コードの流れが乱れてしまいます。電子メールを送信します。私のメソッドを呼び出した後、私はエラーが起こっていないという仮定に基づいて電子メールを送信します(そうでなければ、私のコードフローからキャッチブロックに投げ込まれてしまいましたが、ではなくが起こっています)。
このような状況に対処する方法はありますか?
どのようなトランザクション管理/戦略を使用していますか? DBにコミットされることが予想される場合は、明示的なトランザクションを使用する必要があります。暗黙的なトランザクションに頼るのは決して良い考えではありません... http://hibernateprofiler.com/learn/alerts/DoNotUseImplicitTransactions –
私は確信していませんが、Hibernateレイヤーですぐに自動フラッシュする方法はありますか? (私はDBレイヤーについて話しているわけではありません、それはまだトランザクションです。) –
なぜあなたは例外を取得していませんか? HibernateやJDBCの例外と同様? –