[NPE] N:N 연관 관계 매핑 중 NullPointerException

Eunho·2023년 5월 9일
0

TroubleShooting

목록 보기
2/8

order : coffee = N : N 관계를, orderCoffee 클래스를 추가하여 order : orderCoffee = 1 : N, orderCoffee : coffee = N : 1 로 매핑했다.
어플리케이션 실행 후, postMan에서 coffee, member를 post한 후 order를 포스트하려는데 자꾸 NullPointerException이 발생했다.
발생한 위치는 OrderService의 createOrder 메서드 중 coffee가 유효한지 검사하는 곳이었다.

order.getOrderCoffees().stream()
                .forEach(orderCoffee -> coffeeService.findVerifiedCoffee(orderCoffee.getCoffee().getCoffeeId()));
                

coffeeId는 Long으로 선언되어 있기 때문에, coffeeId에 값이 없음을 추측할 수 있었다. 그래서 OrderMapper를 살펴 보던 중 @Generated 애너테이션이 붙은 OrderMapperImpl 클래스를 발견했다. MapStruct를 사용해서 자동 매핑을 설정하면 자동으로 생성되는 클래스이다.
OrderMapperImpl
이 클래스의 orderPostDtoToOrder는 이렇게 생겼는데, 이 아이는 orderCoffee의 필드 coffeeId를 설정해주지 않는다. 그래서 NPE이 났던 거였다. !!!
order 매퍼 인터페이스에 default 메서드로 orderPostDtoToOrder를 작성해서 해결했다.

mapper 클래스 레벨에 @Mapper(componentModel = "spring") 애너테이션을 붙여주면 @Generated 애너테이션이 붙은, 자동 매핑 코드가 생성된다. 이 부분에 대해 추후에 공부해야겠다.

MapStruct 참고할 자료

profile
🌱우당탕탕 메모장 (●'◡'●)🌱

0개의 댓글