[kotlin][mapstruct] error: No property named "isIncome" exists in source parameter(s). Did you mean "price"?

프로그래밍/서버2021. 3. 29. 22:00

문제 현상

maven compile 실행 후 kapt 단계에서 아래의 에러가 발생했습니다.

 

error: No property named "isIncome" exists in source parameter(s). Did you mean "price"?

 

에러 발생 부근의 코드입니다.

@Mapper
interface ItemMapper {
    @Mapping(source = "roomNo", target = "roomNo")
    @Mapping(source = "roomOrder", target = "roomOrder")
    @Mapping(source = "userId", target = "userId")
    @Mapping(source = "roomId", target = "roomId")
    @Mapping(source = "roomNickName", target = "roomNickName")*/
    @Mappings(
        Mapping(source = "itemId", target = "itemId"),
        Mapping(source = "roomId", target = "roomId"),
        Mapping(source = "isIncome", target = "isIncome"),
        Mapping(source = "price", target = "price"),
        Mapping(source = "item", target = "item")
    )
    fun itemToItemDtoInfo(item: Item?): ItemDtoInfo?
}

 

원인

Item에 있는 여러 property 중에 isIncome만 제대로 찾지 못해서 발생하는 에러입니다.

 

maven compile 후 target > kaptStubs > compile 폴더에 가면 kapt를 위해 생성된 java 파일을 볼 수 있습니다.

여기서 Entity쪽 코드를 보겠습니다.(Item.java)

 

private final int itemId = 0;
private int isIncome;

public final int getItemId() {
    return 0;
}

public final int isIncome() {
    return 0;
}

isIncome의 경우 getter가 getIsIncome()이 아닌 isIncome()입니다.

mapstruct의 자세한 내부 동작 과정은 모르지만 mapstruct에서 getIsIncome()을 호출하였으나 이 함수가 없어서 이 에러를 발생한게 아닌가 싶습니다.

 

해결 방법

isIncome처럼 is로 시작하는 변수명을 안쓰면 됩니다.

incomeType으로 이름을 변경하니 정상적으로 컴파일 됩니다.

 

참고

없음

 

작성자

Posted by 드리머즈

관련 글

댓글 영역