/**
用别名方法B代替
* 逆向 写入商品明细
* @param orderId
* @param applymentId
* @param invoiceAmount
*/
@
Transactional
(rollbackFor = Exception.class)
public void handleReverseAccountSales(Long orderId,Long applymentId,Long invoiceAmount){
//写入一条数据
}
/**
用别名方法C代替
*正向 写入商品明细
* @param orderId
* @param userId
* @param invoiceAmount
*/
@
Transactional
(rollbackFor = Exception.class)
public void handlePositiveAccountSales(Long orderId,Long userId,Long invoiceAmount){
//更新已经写的数据
}
/**
* 用别名方法A代替
* @param orderNo
* @return
* @throws InterruptedException
*/
public Boolean batchHandleAccountSales(Long orderNo) throws InterruptedException {
...
handlePositiveAccountSales();
handleReverseAccountSales()
...
}
1、首先在方法A没有加事务,B加了事务 C加了事务 方法C出现异常会回滚,方法B是执行成功的 事务之间不干扰
2、首先在方法A没有加事务,B没有加事务 C加了事务 方法C出现异常会回滚,方法B是执行成功的
3、如果在方法A上加了事务 方法C出现异常会回滚,此时方法B是也没有执行成功的
4、同上2 如果在方法A上加了事务 方法B和C没有加事务 方法C出现异常 方法B是也没有执行成功的 因为都是在整个事务体系里