首页 > 解决方案 > 如何使用事务注释进行回滚

问题描述

我正在尝试在我的方法中进行事务回滚。我故意让插入失败。但我不认为它会回滚。请帮助我缺少什么。

@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 类中,我有如下方法用于所有删除和插入。

@Override
public int deleteShippingChargeAttr(String test) {
    MapSqlParameterSource params = new MapSqlParameterSource();
    params.addValue("ABC" "ABC", Types.VARCHAR);
    return jdbcTemplate.update(DELETE_QUERY, params);

}

标签: javaspringjdbctemplate

解决方案


你可以试试@Transactional(rollbackFor = XYZException.class)。XYZException 应该是一个异常,它应该包含您想要回滚事务的所有异常/异常。


推荐阅读