Есть ли способ сказать MapStruct не создавать экземпляры каких-либо целевых членов перед выполнением сопоставления? Или, может быть, установить для свойства значение null?
Вот мой пример:
Исходный класс:
Код: Выделить всё
public class Source {
private String v;
protected List agrp;
// some getter and setter
}
Код: Выделить всё
public class SourceAType {
private String a;
// some getter and setter
}
Код: Выделить всё
public class Target {
private String v;
private TargetANt targetANt;
// some getter and setter
}
Код: Выделить всё
public class TargetA {
private String A20;
// some getter and setter
}
Код: Выделить всё
public class TargetANt {
protected TargetA[] array;
// some getter and setter
}
Код: Выделить всё
@Mapper
public abstract class SourceToTargetMapper {
@Mapping(source = "v", target = "v")
@Mapping(source = "agrp", target = "targetANt.array")
public abstract Target mapSourceToTarget(Source input);
}
Код: Выделить всё
protected TargetANt sourceToTargetANt(Source source) {
if ( source == null ) {
return null;
}
TargetANt targetANt = new TargetANt(); // Here are my problem
if ( source.getAgrp() != null ) {
targetANt.setArray( sourceATypeListToTargetAArray( source.getAgrp() ) );
}
return targetANt;
}
Конечно, я могу использовать @ObjectFactory, чтобы генерировать TargetAnt только в том случае, если source.getAgrp() пуст. Однако я говорю о большом количестве сопоставлений, и создавать это для каждого из них было бы излишним. Поддерживать код будет сложно.
Я пробовал NullValueCheckStrategy.ALWAYS. «Он делает то, что должен, но целевой класс уже создан».
Подробнее здесь: https://stackoverflow.com/questions/791 ... an-mapping
Мобильная версия