Рассмотрим приведенные ниже коды, если engine равно нулю, я не хочу его сопоставлять. Как мне это сделать?
@Mapper
public interface CarMapper {
@Mapping(target = "engine", source = "device")
void updateCarFromDto(CarDto carDto, @MappingTarget Car car);
}
Попробуйте этот вопрос. Они имеют в виду перечисление NullValuePropertyMappingStrategy; возможно другое значение?
@Reilas, из предложенного вами вопроса: я пытаюсь добиться только map fields in source into target only when the fields in target are null. Вместо этого я хочу игнорировать.
Также NullValuePropertyMappingStrategy управляйте только источником, но не целью.
Итак, на GitHub есть похожий вопрос для установки значений только тогда, когда поля в target пусты.
@Рейлас, спасибо. поэтому у MapStruct нет встроенной поддержки, и я оставляю свой ответ для справки.
Какая версия используемого Mapstruct?
@fatih 1.5.5.Финал




Мы можем использовать ignore и @AfterMapping.
@Mapper
public interface CarMapper {
@Mapping(target = "engine", ignore = "true")
void updateCarFromDto(CarDto carDto, @MappingTarget Car car);
@AfterMapping
default void update(CarDto carDto, @MappingTarget Car car) {
if (car == null || carDto == null) {
return;
}
if (car.getEngine != null)
car.setEngine(carDto.getDevice);
}
}
@Reilas, твой предложенный вопрос
when source is null, а мой вопросwhen target is null