#java #spring #spring-boot #lombok #mapstruct
#java #spring #весенняя загрузка #ломбок #mapstruct
Вопрос:
У меня есть 2 класса. Мой базовый класс:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class BaseRequest {
@NotNull
@JsonProperty("dateTransaction")
private String dateTransaction;
@NotNull
@JsonProperty("hourTransaction")
private String hourTransaction;
}
И мой другой класс. Этот класс расширяет класс BaseRequest .
public class AddClass extends BaseRequest {
@Setter
@Getter
private String additionalData60;
}
И когда я пытаюсь создать mapper для приведения моего addClass к OtherClass:
@Component
@Mapper(componentModel = "spring", uses = {})
public interface OtherMapper{
@Mappings({
@Mapping(source = "hourTransaction", target = "timeTransaction"),
@Mapping(source = "dateTransaction", target = "dateTransaction"),
@Mapping(source = "additionalData60", target = "additionalData60"),
})
OtherClass toOtherClass(AddClass addClass);
}
Когда я запускаю свою сборку, я получил эту ошибку:
Ошибка:(22,13) java: в исходных параметрах не существует свойства с именем «dateTransaction». Вы имели в виду «null»?
Комментарии:
1. Что произойдет, если вы добавите получатели вручную вместо использования Lombok?
Ответ №1:
MapStruct работает без проблем с Lombok.
Однако, если вы обновились до Lombok 1.18.16 в соответствии с списком изменений Lombok, вам необходимо добавить
lombok-mapstruct-binding
В Gradle:
annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.1.0"
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.1.0</version>
</path>