NullPointerException 발생시 트랜잭션 롤백 안되는 이유
222
정은선
작성한 질문수 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
노션 배경 색상 변경법
3
25
1
어플리케이션 실행 후 에러에 관하여 질문 드립니다.
2
54
2
Claude api가 소식 동기화가 늦는 문제
1
49
2
git hub 404 error 도움 부탁드립니다.
1
43
2





