NullPointerException 발생시 트랜잭션 롤백 안되는 이유
226
정은선
작성한 질문수 1
0
@Transactional(rollbackFor = {Exception.class})
public HashMap<String, Object> saveOrder(OrderDto orderDto){
HashMap<String, Object> returnMap = new HashMap<String, Object>();
try{
String orderId = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
Device device = deviceRepo.findDeviceByDeviceId(orderDto.getDeviceId());
if(ObjectUtils.isEmpty(device)){
returnMap.put("resCode", ResMessage.DeviceNotFound.getResCode());
returnMap.put("resMsg", ResMessage.DeviceNotFound.getResMessage());
return returnMap;
}
orderRepo.save(OrderList.builder()
.orderId(orderId)
.deviceId(orderDto.getDeviceId())
.totalPrice(orderDto.getTotalPrice())
.couponNum(orderDto.getCouponNum())
.build());
//쿠폰 사용 적용
if(!StringUtils.isEmpty(orderDto.getCouponNum())){
CouponList couponList = couponListRepo.findByCouponNum(orderDto.getCouponNum());
if(!ObjectUtils.isEmpty(couponList))
couponList.setUsed(device);
}
returnMap.put("resCode", ResMessage.Success.getResCode());
returnMap.put("resMsg", ResMessage.Success.getResMessage());
return returnMap;
} catch (Exception e) {
returnMap.put("resCode", ResMessage.SystemError.getResCode());
returnMap.put("resMsg", ResMessage.SystemError.getResMessage());
return returnMap;
}
}
주문하는 api 연습하고 있는데요 ㅠㅠ
쿠폰을 사용한 쿠폰으로 적용하는 부분에서 일부로 없는 쿠폰번호를 날려서 NullPointerException을 내봤는데 트랜잭션 롤백이 안되고 주문한 내용이 DB에 적용되더라구요 ㅠㅠ
unchecked exception이니까 롤백되는게 맞는거같은데 롤백이 안되서요 ㅠㅠ 혹시 아시는분 있을까요?
답변 0
26-2 이론문제 재탕
1
61
1
왜 이름이 Graph engineering인가요?
1
50
2
개인 블로그에 정리하면서 ppt 자료 캡처 해서 넣어도 되나요?
1
56
2
run.py 실행하니 아예 전체다 돌아가요 코드가
1
44
2





