我的问题如下。伪代码代码如下:
public Object rollBackTestMainMethod(List<Object> list) {
List<Object> responseList = new ArrayList<>();
for(Object item:list){
try{
Boolean isOperationSuccess = rollBackTestSubMethod(item);
if (isOperationSuccess==null || !isOperationSuccess){
item.addError("Operation failed");
item.addSuccess(false);
} else {
item.addError(null);
item.addSuccess(true);
}
} catch(Exception exception) {
item.addError(exception.getMessage());
item.addSuccess(false);
}
responseList.add(item);
}
return responseList;
}
@Transactional(rollbackFor = {Exception.class, SQLException.class})
private Boolean rollBackTestSubMethod(Object listItem){
Long value1=save(listItem.getValue1());
if(value1==null){
throw new Exception("Error during save 1");
}
我在这里做什么:
在 中迭代一个列表rollBackTestMainMethod()。发送一个列表项rollBackTestSubMethod()并执行 3 保存操作。
如果全部保存完成则返回真响应,否则抛出异常。
中rollBackTestMainMethod(),在得到响应或异常后,在每个项目上添加错误或成功值。
它将此项添加到名为 的新列表中responseList。在所有操作之后,它会将其作为响应发送回来。
我的问题:
从rollBackTestSubMethod()它抛出后不会回滚,因为它是从 try catch 块调用的。
如果我想强制回滚,TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();那么它将回滚所有项目以进行任何抛出/异常。
在这里,我只想回滚投掷物品而不是所有物品。
此方法在 Spring bean 中
我正在通过spring data jpa将数据保存到我的关系数据库中
慕哥9229398
MYYA
慕仙森
随时随地看视频慕课网APP
相关分类