[英]How to do Rollback with Transactional Annotation
我正在嘗試在我的方法中進行事務回滾。 我故意讓插入失敗。 但我不認為它會回滾。 請幫助我缺少什么。
@Service
public class ModesService implements IModesService{
ChargeRuleDao chargeRuleDao;
public ModesService(ChargeRuleDao chargeRuleDao){
this.chargeRuleDao = chargeRuleDao;
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void process(ChargeRule chargeRule){
chargeRuleDao.deleteShippingChargeAttr(shippingChargeRuleID);
chargeRuleDao.deleteShippingCharge(shippingChargeRuleID);
chargeRuleDao.deleteShippingChargeDest(shippingChargeRuleID);
//Delete
chargeRuleDao.insertShipChargeFeedRule(chargeRule);
}
在 DAOImpl class 中,我有如下方法用於所有刪除和插入。
@Override
public int deleteShippingChargeAttr(String test) {
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("ABC" "ABC", Types.VARCHAR);
return jdbcTemplate.update(DELETE_QUERY, params);
}
您可以嘗試@Transactional(rollbackFor = XYZException.class)
。 XYZException 應該是一個異常,它應該包含您想要回滾事務的所有異常/異常。
默認情況下,每個未經檢查的異常都會發生回滾。 這意味着您需要拋出某種類型的未經檢查的異常,例如
throw new NullPointerException();
在您的 insertShipChargeFeedRule(chargeRule);
更多關於@Transactional 這里https://javamondays.com/spring-transactions-explained/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.