方法【updateStaffByGarden】需要在Transactional注解指定rollbackFor或者在方法中显式的rollback。
Inspection info:
事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚事务。
修改办法:
例1:类名上声明事务并设置回滚
/**
* @Description
* @Author tianChenKun
* @Date 2023/5/24 10:33
**/
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {
@Override
public void save(User user) {
//some code
//db operation
}
}
例2:方法名上声明事务并设置回滚
/**
* @Description
* @Author tianChenKun
* @Date 2023/5/24 10:33
**/
@Service
public class UserServiceImpl implements UserService {
@Override
@Transactional(rollbackFor = Exception.class)
public void save(User user) {
//some code
//db operation
}
}
例3:方法中catch到手动回滚
/**
* @Description 新增
* @Author tianChenKun
* @Date 2023/5/24 10:33
**/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private DataSourceTransactionManager transactionManager;
@Override
@Transactional
public void save(User user) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// explicitly setting the transaction name is something that can only be done programmatically
def.setName("SomeTxName");
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
// execute your business logic here
//db operation
} catch (Exception ex) {
transactionManager.rollback(status);
throw ex;
}
}
}