티스토리 뷰
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에는 문제가 없었을 것이라고 판단한 것이 잘못된 선택이었다.
'Spring' 카테고리의 다른 글
[Spring] 멀티모듈 JPA 테스트 (0) | 2023.01.10 |
---|---|
컴파일 타임 의존성과 런타임 의존성 (0) | 2022.12.08 |
[Spring]생성자와 의존성 주입 (1) | 2022.12.07 |
[Spring]Enum을 쉽게 관리하게 만드는 Converter (1) | 2022.11.01 |
[Spring]멀티모듈 프로젝트 QueryDsl 오류 (0) | 2022.10.27 |
댓글