Java Mapstruct-忽略嵌套类中的特定字段

Java Mapstruct-忽略嵌套类中的特定字段,java,mapstruct,Java,Mapstruct,我需要一些使用MapStruct映射嵌套POJO的帮助。我需要跳过/删除目标类中所有子类中的特定字段 例如,以下是我的目标POJO class FullCustomerInfo { UnitIdInfo unitIdInfo; CustomerIdInfo customerIdInfo; NameInfo nameInfo; CustomerTypeInfo customerTypeInfo; AddressInfo addressInfo; } 所

我需要一些使用MapStruct映射嵌套POJO的帮助。我需要跳过/删除目标类中所有子类中的特定字段

例如,以下是我的目标POJO

class FullCustomerInfo {

    UnitIdInfo unitIdInfo;
    CustomerIdInfo customerIdInfo;
    NameInfo nameInfo;
    CustomerTypeInfo customerTypeInfo;
    AddressInfo addressInfo;

}
所有这些子类-
UnitIdInfo
CustomerIdInfo
NameInfo
。。。包含映射时要忽略的字段“
fieldToIgnore
”。这种结构使得这些类不共享包含此字段的公共基类-“
fieldToIgnore

我创建的映射器如下所示:

@Mapper
public interface MapFullCustomer {

    @Mappings({
            @Mapping(target = "unitIdInfo.fieldToIgnore", ignore = true),
            @Mapping(target = "customerIdInfo.fieldToIgnore", ignore = true),
            @Mapping(target = "nameInfo.fieldToIgnore", ignore = true),
            @Mapping(target = "customerTypeInfo.fieldToIgnore", ignore = true),
            @Mapping(target = "addressInfo.fieldToIgnore", ignore = true)
    })
    public FullCustomerInfo map(SourceCustomerInfo sourceCustomerInfo);

}
这很有效

但是,当
FullCustomerInfo
中的子类数量很大时,它会变得很乏味。我需要明确指定每个类

有人能告诉我这是否可以用一种更通用的方法来做吗


谢谢

简单的方法是让所有类扩展包含
fieldToIgnore
公共字段的基类

如果这不合适,您可以尝试在java反射api的帮助下实现一个customr,将所有字段设置为null:

我认为这不值得努力