Народ,
У меня следующая ситуация с MapStruct: я хочу всегда обновлять поле новым экземпляром вместо установки значений в ранее существующем экземпляре.
Пример:
class A {
B fieldB;
}
class B {
String fieldString;
}
class ADTO {
BDTO fieldB;
}
class BDTO {
String fieldString;
}
У меня есть следующее сопоставление с MapStruct:
void copy(ADTO aDTO, @MappingTarget A a);
Полученный результат похож на:
if (aDTO.getFieldB()!= null) {
if (a.getFieldB() == null) {
a.setFieldB(new B());
}
bDTOToB(aDTO.getFieldB(), a.getFieldB());
} else {
a.setFieldB(null);
}
Я хотел бы создать следующее :
if (aDTO.getFieldB()!= null) {
a.setFieldB(new B()); // ALWAYS create a new B instance
bDTOToB(aDTO.getFieldB(), a.getFieldB());
} else {
a.setFieldB(null);
}
Я добавляю, что мне нужно 2 поведения: для некоторых полей мне подходит текущее поведение, то есть установить значения в существующем экземпляре. Для других полей мне нужно это изменение в поведении, как я упоминал ранее (a.setFieldB(newB())
).
Возможно ли это сделать? Какая стратегия лучше?