[스프링][map struct] error: Property "itemId" has no write accessor in ItemDtoInfo.

프로그래밍/서버2021. 4. 18. 16:51

문제 현상

메이븐 빌드 시 아래의 에러가 발생함

error: Property "itemId" has no write accessor in ItemDtoInfo.

 

*ItemDtoInfo 코드

data class ItemDtoInfo(val itemId: String, var roomId : String, var incomeType: Int, var price: BigDecimal, var item: String)

원인

ItemDtoInfo에서 itemId가 val로 선언되서 생긴 문제로 보입니다.

val로 선언되면 컴파일 후에도 getItemId() 함수만 생성되고 setItemId()가 생성되지 않습니다.

 

그런데 컴파일 단계에서 생성된 mapper implement를 보면 생성자가 아닌 setXXX() 등의 함수로 값이 설정되기 때문에 이런 문제가 생깁니다.

    public ItemDtoInfo itemToItemDtoInfo(Item item) {
        if (item == null) {
            return null;
        } else {
            String arg0 = null;
            String arg1 = null;
            int arg2 = 0;
            BigDecimal arg3 = null;
            String arg4 = null;
            ItemDtoInfo itemDtoInfo = new ItemDtoInfo((String)arg0, (String)arg1, arg2, (BigDecimal)arg3, (String)arg4);
            itemDtoInfo.setItemId(item.getItemId());
            itemDtoInfo.setRoomId(item.getRoomId());
            itemDtoInfo.setIncomeType(item.getIncomeType());
            itemDtoInfo.setPrice(item.getPrice());
            itemDtoInfo.setItem(item.getItem());
            return itemDtoInfo;
        }
    }

 

해결 방법

ItemDtoInfo에서 itemId가 var로 변경하면 문제가 해결됩니다.

 

 

참고

없음

 

작성자

Posted by 드리머즈

관련 글

댓글 영역