Используйте стратегию проверки нулевого значения. ВСЕГДА
на свойстве сопоставления, которое вы хотите проверить. В следующем фрагменте вы можете видеть, что объект Почтовый адрес
сопоставляется с объектом того же типа, но идентификатор
перезаписывается только тогда, когда он присутствует в источнике :
import java.time.LocalDateTime; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.NullValueCheckStrategy; import com.example.entity.PostalAddress; @Mapper( componentModel = "cdi", imports = {LocalDateTime.class}) public interface PostalAddressEntity2EntityMapperService { @Mapping(source = "id", target = "id", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) PostalAddress toPostalAddressntityToPostalAddressEntity( PostalAddress PostalAddress); }
Это приведет к созданию чего-то подобного со следующим
package com.example.entitytoentity; import com.example.entity.PostalAddress; import java.time.LocalDateTime; import javax.annotation.processing.Generated; import javax.enterprise.context.ApplicationScoped; @Generated( value = "org.mapstruct.ap.MappingProcessor", date = "2021-09-01T14:28:11+0200", comments = "version: 1.4.2.Final, compiler: javac, environment: Java 11.0.12 (Azul Systems, Inc.)" ) @ApplicationScoped public class PostalAddressEntity2EntityMapperServiceImpl implements PostalAddressEntity2EntityMapperService { @Override public PostalAddress toPostalAddressEntity(PostalAddress PostalAddress) { if ( PostalAddress == null ) { return null; } PostalAddress PostalAddress1 = new PostalAddress(); if ( PostalAddress.getId() != null ) { PostalAddress1.setId( PostalAddress.getId() ); } PostalAddress1.setStreeNo( PostalAddress.getStreetNo() ); PostalAddress1.setStreet( PostalAddress.getStreet() ); PostalAddress1.setMainAdress( PostalAddress.getMainAdress() ); return PostalAddress1; } }
Поделился с ❤️ из Codever . 👉 используйте функцию копировать в мой , чтобы добавить ее в свою личную коллекцию фрагментов.
Оригинал: “https://dev.to/codever/force-null-value-check-on-field-mapping-in-mapstruct-37i7”