1
Spring、JPA、Hibernateプロジェクトでは、例外処理を動作させようとしています。Spring EntityManagerのHibernate例外処理
@Repository("mscoutService")
public class MScoutServiceImpl implements MScoutService, Serializable {
@PersistenceContext
private EntityManager em;
...
@Override
@Transactional
public void deleteMission(Long missionId) {
try {
Mission mis = em.find(Mission.class, missionId);
em.remove(mis);
} catch (Exception e) {
handle_exception();
}
}
私は(依存エンティティはまだorg.springframework.orm.hibernate3.HibernateJdbcExceptionで失敗します削除を提示している場合など)基本的な休止/ JDBC/DBの例外をキャッチしようとしている次のコードの場合いくつかのアクションを実行します。ただし、catchコードには決して到達しません(デバッガでチェックされます)。
私はこの春には、これを管理方法に関係していると思いますが、私は
すべてのヘルプは高く評価され...私はem.remove()中に例外をキャッチすることができますどれだけ知っていません!
ありがとうございます! em.flush()を追加すると例外ハンドラがキャッチするようになりました。これが私の問題を解決しました。 – Tom
私はこのスレッドが少し古いと知っていますが、@Transactionalを使用しているリポジトリの上の例外の1つのレイヤーを処理する方が良いでしょうか?それとも、例外を処理するのに好ましい方法ですか? – oberger
はい、一般的にリポジトリの外で行う方が良いです。 – Bozho