How to fix unknown property in result type - Mapstruct with Lombok
Mapstruct is a great java tool for mapping properties of one type to another. It helps save time and prevent repetitive tasks. If you are not familiar with it, I suggest you check it out at the official website: https://mapstruct.org/
In Fig 1, notice that the complaint is about line 17. The error reads that it cannot find a "width" property in Card class. The Card class is shown in Fig 2. We can see that lombok is used, so there are no explicit getter methods. We also confirm that the "width" property is present in this class. Yet mapstruct says it cannot find it.
Why Mapstruct cannot find the property§
If we take a moment to look through the build.gradle file for this application, we might be able to see the cause of the error. In Fig 3, I had placed the mapstruct annotation processor before the lombok annotation processor. This means that at the time mapstruct is processing this class, it actually cannot find the getter property. So the error message is actually valid.
Solution§
Simply move the mapstruct annotation processor below that of lombok, and the problem goes away.
Happy Coding!!!
Member discussion