私は最も奇妙なことが起こっていると私は理由を理解できません。これを記述するための最良の方法は、簡単な例を提供することである。この特定のケースでは既に捕獲された後の例外プロポゲート
@Service
@Transactional
public class Foo{
public ModelAndView delete(@ModelAttribute("abc") Long id) {
ModelAndView mav = new ModelAndView();
try {
getDaoService().delete(id); //Calls Bar.delete()
} catch (final Exception e) {
// Add a custom error message to the mav for the user to see
mav.getModelMap().addAttribute(blah, blah);
}
return mav;
}
}
@Service
@Transactional
public class Bar {
public void delete(final E entity) throws HibernateException {
if (null != entity) {
try {
sessionFactory.getCurrentSession().delete(entity);
} finally {
sessionFactory.getCurrentSession().flush();
}
}
}
}
を、私は、制約違反(ORA-02292)を持つオブジェクトを削除しようとしています。私はこのために削除が失敗することを期待しています。削除が失敗すると、適切なカスタムメッセージをユーザーに表示します。代わりに、ユーザーにカスタムメッセージを表示することができるという
は、呼び出しが画面に次の失敗と表示されます。
org.springframework.transaction.UnexpectedRollbackException:それはマークされているため、トランザクションがロールバックさ ロールバックのみ
デバッガを使用すると、エラーが適切に検出され、ModelAndViewオブジェクトにカスタムメッセージが含まれていることがわかります。だから、なぜそれが捕まえられて対処された後に例外がスローされているのかわからない。誰がなぜこれが起こっているのかについての洞察を持っていますか?
素晴らしい、魅力的なように働いた!ありがとう!!! – user973479