当目标具有与源同名的变量时,使用自定义源和目标变量的@Mapping无法按预期方式工作

时间:2019-05-08 09:45:01

标签: java lombok mapstruct

我在Source和Target类下面,我正在使用lombok生成吸气剂和吸气剂

public class Target {
    private String name;
    private String newName;
}

public class Source {
    private String name;
}

并说我是否要将Source.name映射到Target.newName 我正在下面的Mapper类中使用@Mapping来指定源变量和目标变量。

但是一旦我编译代码并检查生成的ClassMapperImpl 它是将Source.name映射到Target.name而不是Target.new名称

@Mapper
public interface ClassMapper {

    @Mapping(source = "name", target = "newName")
    Target sourceToTarget(Source s);
}

1 个答案:

答案 0 :(得分:1)

我认为尝试时它们都被映射了

public class ClassMapperImpl implements ClassMapper {

    @Override
    public Target sourceToTarget(Source s) {
        if ( s == null ) {
            return null;
        }

        Target target = new Target();

        target.setNewName( s.getName() );
        target.setName( s.getName() );

        return target;
    }
}

请在name属性上使用忽略。

@Mapper
public interface ClassMapper {

    @Mapping(source = "name", target = "newName")
    @Mapping(ignore = true, target = "name")
    Target sourceToTarget(Source s);
}