當我們需要在事務控制的service層類中使用try catch 去捕獲異常后,就會使事務控制失效,因為該類的異常並沒有拋出,就不是觸發事務管理機制。怎樣才能即使用try catch去捕獲異常,而又讓出現異常后spring回滾呢,這里就要用到
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
完美解決問題。並且能夠使該方法執行完。
=---------------------------
String isShipments = tOrderMapperExt.getGoodsNotdeliveryById(request.getGoodsId());
if(isShipments!= null){ //該城市是否發貨
List<String> stringList = ResolverUtil.StringToList(isShipments);
if(stringList.contains(request.getCityId())){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw new SystemRuntimeException("該商品該城市不發貨,請選擇其他地址進行下單!", HttpStatus.OK);
}
}
