私はSpringとトランザクションにかなり慣れていません。この質問は以前にもあったと思いますが、まだ正しい方法がわかりません。
私はSpringとHibernateを使用しています。次のようなサービスメソッドがあります。
@Transactional
public void processPendingReport(Report report) {
try {
// Do processing stuff, update report object state
reportDAO.save(report);
} catch (Exception e) {
reportDAO.markReportAsFailed(report);
}
}
処理中に RuntimeException が発生した場合、「rollbackOnly としてマークされたトランザクション」RollbackException がスローされ、その結果、レポートは失敗としてマークされません (私はそうしたいのですが)。
@Transactional(noRollbackFor=Exception.class) を使用してみましたが、それでも同じ問題が発生します.何か提案はありますか? 構成の問題でしょうか?