你能告诉我如何忽略一些在另一个对象中没有相关属性的字段吗?
我有Foo和FooDto对象,我想要它们的mapper。在Dto对象中,我得到了另一个属性boolean isFoo
,它不在Foo对象中。
我尝试过这样的想法:
@Mapper
public interface FooMapper {
@Mappings({
@Mapping(target = "isFoo", ignore = true)
})
FooDto doToDto(Foo foo);
Foo dtoToDo(FooDto fooDto);
}
我收到了错误
结果类型FooDto中的未知属性“isFoo”。
我做错了什么?谢谢你的建议。
答案 0 :(得分:0)
这意味着映射器正在尝试将FooDto.isFoo
与Foo.isFoo
相关联,但FooDto
上不存在isFoo
。这可能会导致您丢失数据,因为Foo
实体上不会设置Foo dtoToDo(FooDto fooDto)
,因此我强烈建议您在DTO课程中添加此字段。如果您确实不想添加新字段,则需要在{{1}}之上添加另一个映射以忽略此字段。
答案 1 :(得分:0)
MapStruct没有查看字段的名称来查找其名称。它使用JavaBeans规范。请查看Basic Mappings。
我认为您在isFoo()
中有一个名为FooDto
的方法,在这种情况下,该属性的名称为foo
。所以你需要做@Mapping(target = "foo", ignore = true)