inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

NullPointerException 발생시 트랜잭션 롤백 안되는 이유

221

정은선

작성한 질문수 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

실행과정 질문입니다.

2

41

1

환경설정 문

2

36

2

질문있어요!

2

55

2

volatile에 대해 질문 있습니다.

2

48

2