代码之家  ›  专栏  ›  技术社区  ›  Denis Stephanov

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

  •  0
  • Denis Stephanov  · 技术社区  · 7 年前

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

    我有Foo和FooDto对象,我需要它们的映射器。在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 回复  |  直到 7 年前
        1
  •  0
  •   Filip    7 年前

    MapStruct没有查看字段的名称以查找其名称。它使用JavaBeans规范。查看更多信息 Basic Mappings

    我想您有一个名为 isFoo() 在里面 FooDto 在这种情况下,属性的名称为 foo .所以你需要 @Mapping(target = "foo", ignore = true)

        2
  •  0
  •   agilob    7 年前

    这意味着映射器正在尝试链接 FooDto.isFoo 具有 Foo.isFoo 但它不存在于 FooDto 。这可能会导致数据丢失 isFoo 不会被设置为打开 Foo 实体,因此我强烈建议在DTO类中添加此字段。如果确实不想添加新字段,则需要在上面添加另一个映射 Foo dtoToDo(FooDto fooDto) 忽略此字段。