【发布时间】:2015-03-02 20:04:55
【问题描述】:
有没有办法在使用声明性事务管理捕获异常后回滚事务。我有这段代码。
@Component
@Transactional(rollbackFor = EvictionException.class)
Public class Eviction{
@Autowired
private Alerter alerter;
@Scheduled(cron = "${evictor.cron.expression}")
public void evictObjectFromDatabase(){
try{
....
DO SOME DELETION QUERIES
}catch(Exception ex){
alerter.produceAlert("Failed to delete entries from database");
}
}
}
如果在删除时产生异常,我需要发出警报,让另一个团队监控摆动 UI。我还需要回滚事务,但使用 rollBackFor = Exception.class 不起作用。
【问题讨论】:
-
你把这个标有
@Transactional的EvictionException扔到哪里来进行回滚? -
您可以使用 throws 将异常从方法中抛出,或者这不是一个选项吗?
-
有什么方法可以回滚事务而不会重新抛出异常
标签: java spring transactions