我有一个场景,其中我使用不同的查询将数据写入不同的表。我在服务级别有可重复的读取事务。我正在使用MySQL DB和Spring MVC。如果交易成功,那么我在某张表COMPLETE
中将标志状态设置为JOB_STATUS
。现在的问题是,当代码中发生异常时,我需要在FAILED
表中将fLag设置为JOB_STATUS
。但是,在异常期间,将数据保存在JOB_STATUS
表中也会回滚。我该如何避免呢?
@Transactional(repeatable-read)
try {
// do some transactions to save User data in DB
// do the transaction to save status as Complete in job_status table
} catch(Exception e) {
// in case of an exception I need to set status as failed in job_Status table
}
在catch块中,当发生异常时,我还需要在job_status表中将状态设置为“失败”,因为整个方法都带有@Transnational
注解和repeatable-read
,所以我无法设置此状态。关于如何避免它的任何指示?