Как сделать, чтобы MapStruct не генерировал объект-обертку, если свойство имеет значение null? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть код, который использует MapStruct для сопоставления from.id со to.ref.id структурой.Когда from.id равно нулю, MapStruct создаст новый экземпляр Reference и установит для его id значение null.Как вместо этого сделать так, чтобы он не генерировал класс-обертку, и установил to.ref на ноль?

Я пробовал разные значения для сопоставления nullValueCheckStrategy и nullValuePropertyMappingStrategy, но, похоже, они нене имеет значения для этого случая.

Это мой код, методы получения и установки для краткости опущены.

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;
}

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете попробовать что-то вроде этого

Создайте новый маппер следующим образом.

@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);
}
...