如果property为null,如何让MapStruct不生成包装器对象?

问题描述 投票:1回答:1

我有一些代码使用MapStruct将from.id映射到to.ref.id结构。当from.id为null时,MapStruct将创建一个新的Reference实例并将其id设置为null。我如何使它不生成包装类,并将to.ref设置为null?

我已经为映射的nullValueCheckStrategynullValuePropertyMappingStrategy尝试了不同的值,但这些似乎对这种情况没有任何影响。

这是我的代码,为了简洁省略了getter和setter。

public class Example {
    public static void main(String[] args) {
        System.out.println(Mappers.getMapper(MyMapper.class).get(new From()));
    }
}

@Mapper
interface MyMapper {
    @Mapping(source = "id", target = "ref.id")
    To get(From from);
}

class From {
    private String id;
}

class To {
    private Reference ref;
}

class Reference {
    private String id;
}
java mapstruct
1个回答
2
投票

你可以尝试这样的事情

创建一个新的映射器,如下所示。

@Mapper
public interface Mapper1 {
    @Mapping(source = "id", target = "id")
    Reference get(String id);
}

然后更新退出映射器以使用这样的新映射器

@Mapper(uses = Mapper1.class)
public interface MyMapper {

    @Mapping(source = "from.id", target = "ref")
    To get(From from);
}
© www.soinside.com 2019 - 2024. All rights reserved.