[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으로 이름을 변경하니 정상적으로 컴파일 됩니다.
참고
없음
댓글 영역