본문 바로가기
프로그래밍/세팅 및 오류

[Mapstruct] Can't generate mapping method for a generic type variable source. 오류

by 노잼인간이라불립니다 2023. 2. 19.

mapstruct를 이용해서 사이드 프로젝트를 하면서 구조를 짜던 중 이런 오류가 발생했다. 

 

직역하자면 mapping 할때 generic 타입을 사용할 수 없다는 건데, 어디서 잘못된건지 알 수가 없었다........

 

일단 프로젝트 mapstruct의 구조는 이렇게 설계했다.

 


genericMapper

|

productMapper

|

productMapperImpl(이건 mapstruct가 자동으로 생성해준다.)


 

그런데 아무리 build clean하고 다시 build 해봐도 똑같은 오류가 발생했다.

 

이유는 간단했다.

 

generic을 사용한 mapper에서 @Mapper(componentModel = "spring") 어노테이션을 사용했기 때문에 발생한 오류였다.

@Mapper(componentModel = "spring")
public interface GenericMapper<T,R,E> {

 

@Mapper가 붙은 인터페이스를 참조로하여 impl을 생성(실행 코드)해주는 모양인데 이 때, 타입이 구체적인 타입이 아닌 generic으로 선언되어 있어서, 생긴 오류였다.

 

mapstruct가 실제 동작할 때는 꼭 구체적인 타입이 필요하다는 것을 이번 기회에 알게 되었다.