이슈
- MapStruct 사용시 Problem Entity에서 ProblemResponseDto로 변환하고, 변환한 DTO를 찍어보니, problemTagList가 매핑이 제대로 안되는 이슈가 발생했다.
- 테스트 코드에서도 NPE가 발생하여 원인을 찾아보니, MapperImpl은 내부에서 매핑할 때 다음과 같이 로직을 수행한다.
ProblemMapperImpl.java
@Override
public Problem toEntity(ProblemRequestDto requestDto) {
if ( requestDto == null ) {
return null;
}
ProblemBuilder problem = Problem.builder();
problem.title( requestDto.getTitle() );
problem.link( requestDto.getLink() );
problem.level( requestDto.getLevel() );
return problem.build();
}
- getter,setter를 사용하여 객체간 매핑을 지원하기 때문에 소스에는 @Getter를, 타켓에는 @Setter를 설정해야 하는 것이다.
해결
- ProblemTag에 @Getter를 설정하였다.