티스토리 뷰

1. UserDto -> User로 변환하는 과정 진행 중, User에 모든 값이 null로 할당되는 오류 발생

폴더 구조

build > generated 에 생성된 UserMapperImpl 로직 내에서 toEntity 메서드가 

@Override
public User toEntity(UserDto arg0) {
    if ( arg0 == null ) {
        return null;
    }

    User user = new User();

    return user;
}

와 같이 설정되어 있었다.

실마리 찾기

1.  MapperImpl에서 Entity to Dto는 잘 생성되지만 Dto to Entity가 생성되지 않는다.

2. Dto의 Annotation @Getter @AllArgsConstructor을 선언하였을 때는 Entity to Dto가 멀쩡히 작동하지만, @NoArgsConstructor Annotation을 추가하니 Entity to Dto도 잘 생성되지 않았다.

해결 방법

Gradle 구조 변경

 

기존 :domain-user의 build.gradle

annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
api 'org.mapstruct:mapstruct:1.5.3.Final'
api 'org.projectlombok:lombok-mapstruct-binding:0.2.0'

 

변경 후 :domain-user의 build.gradle

api 'org.mapstruct:mapstruct:1.5.3.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'

compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'

testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'

 MapStrcut 참 적용하기 힘들다. :domain-user에서는 :module-core라는 공통 모듈을 dependencies로 implementation 하고 있었다. :module-core에 lombok을 선언하고 있었으니 잘 불러와질 것이라고 생각했다. Entity to Dto에서 MapStruct가 잘 작용했으니 Lombok에는 문제가 없었을 것이라고 판단한 것이 잘못된 선택이었다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함