RestClientException不回滚整个事务



请参考下面的代码片段

@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = { Throwable.class })
@Override
public MyClass myMethod(myParams) {
try{
myRepo.saveAll(myEntityList);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(myUrl,requestParam,String.class);
if(responseEnity.getBody()!=null && StringUtils.equalsIgnoreCase(responseEnity.getBody(),"Failure")){
log.error("Rest Call Failed");
throw new RestClientException("Error in remote service");
}
}catch(Exception e){
e.printStackTrace();
}
}

现在在控制台日志中,我可以看到RestClientException被抛出,但myRepo.saveAll(myEntityList);没有回滚,而是将数据插入DB。

谁能解决这个问题?

我的要求是,在RestServiceCall中,如果我得到一个失败的响应,那么我的当前事务应该完全回滚。

您的事务没有回滚,因为没有抛出异常,您正在捕获它。

正如@Sumit Ghost提到的,您可以记录它并重新抛出异常

相关内容

  • 没有找到相关文章

最新更新