본문 바로가기
오류를 개발새발

값이 같은 Long 두개를 비교했는데 왜 false 일까?

by 휴일이 2023. 1. 3.

 

public MdOrderDto selectOne(Long mdOrderId, Long memberId) {
        MdOrder mdOrder = em.find(MdOrder.class, mdOrderId);

        log.info("멤버 아이디 = {}", memberId);
        log.info("찾은 멤버 아이디 = {}", mdOrder.getOrder().getMember().getId());
        if(mdOrder.getOrder().getMember().getId() != memberId) {
            return null;
        }

        return new MdOrderDto(
                mdOrder.getId(), mdOrder.getQuantity(), mdOrder.getPrice(), mdOrder.getMarket().getMd().getName(),
                mdOrder.getDelivery().getAddress(), mdOrder.getDelivery().getStatus(), mdOrder.getOrder().getStatus(),
                mdOrder.getOrder().getOrderDate()
        );
    }

 

 

주문 페이지에서

해당 주문을 한 멤버가 아니면 null을 리턴하는 로직을 만들었다

 

하지만 같은 아이디 값인데도 null을 반환하는 문제가 발생했다

 

로그로 찍어서 확인

 

 

 

생각해보니

널을 받기 위해 Long 으로 값을 받았는데

앞 글자가 대문자인 Long은 Object 타입이기 때문에

== 비교가 안 되었던 것...

 

 

equals 로 비교를 해주니 잘 동작한담 :)

 

 

 

호호

 

728x90