当我尝试在mapstruct
中的两个mapper
之间创建classes
时,
我编译代码时得到warning
:
src/main/java/mapstruct/DogMapper.java:15: warning: Unmapped target property: "otherField".
Cat convert(Dog dog);
^
1 warning
这是我想要映射的两个对象:
狗
@Getter
@Setter
public class Dog {
private String say;
}
猫
@Getter
@Setter
public class Cat {
private String say;
private String otherField;
}
这是我的 Mapper
@Mapper
public interface DogMapper {
DogMapper mapper = Mappers.getMapper( DogMapper.class );
@Mapping(source = "say", target = "say")
Cat convert(Dog dog);
}
我读了mapstruct docs
,我知道我可以通过多种方式排除这个特定字段:
@Mapping(ignore = true, target = "otherField")
或通过这种方式:
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
但我的目的最终是排除名为otherField
的具体字段,
来自我所有的地图制作者,但不排除我没有使用的其他领域。
有没有办法实现这个目标?
答案 0 :(得分:3)
你已经回答了自己的问题,我不确定我是否理解你。您只想输入@Mapping(ignore = true, target = "otherField")
一次吗?
如果此字段位于某个公共基类中,则可以使用Shared Configurations。否则,您使用@Mapping(ignore = true)
的方式就是您的选择。
一方注意。您不必添加@Mapping(source = "say", target = "say")
MapStruct自动映射具有相同名称的属性