請參考下面的代碼片段
@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);沒有回滾而是將資料插入資料庫。
任何人都可以弄清楚這個問題嗎?
我的要求是,RestServiceCall如果我收到失敗回應,那么我當前的事務應該完全回滾。
uj5u.com熱心網友回復:
您的事務不會回滾,因為沒有拋出例外,您正在捕獲它。
正如@Sumit Ghost 提到的,您可以記錄它并重新拋出例外
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329240.html
上一篇:在哪里驗證發送到API的引數?
