忽略映射器中的字段而没有映射对象中的相关属性

时间:2018-04-12 12:55:23

标签: java mapstruct

你能告诉我如何忽略一些在另一个对象中没有相关属性的字段吗?

我有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”。

我做错了什么?谢谢你的建议。

2 个答案:

答案 0 :(得分:0)

这意味着映射器正在尝试将FooDto.isFooFoo.isFoo相关联,但FooDto上不存在isFoo。这可能会导致您丢失数据,因为Foo实体上不会设置Foo dtoToDo(FooDto fooDto),因此我强烈建议您在DTO课程中添加此字段。如果您确实不想添加新字段,则需要在{{1}}之上添加另一个映射以忽略此字段。

答案 1 :(得分:0)

MapStruct没有查看字段的名称来查找其名称。它使用JavaBeans规范。请查看Basic Mappings

我认为您在isFoo()中有一个名为FooDto的方法,在这种情况下,该属性的名称为foo。所以你需要做@Mapping(target = "foo", ignore = true)