В сущности MyEntity
Я нашел что-то вроде этого
@Override
public MyEntity clone(){
// TODO: do not use Orika here
MyEntity clone = new DefaultMapper().map(this, MyEntity.class);
clone.setFieldA(null);
clone.setFieldB(null);
return clone;
}
, где DefaultMapper
является картографом орика:
import javax.enterprise.context.ApplicationScoped;
import ma.glasnost.orika.impl.ConfigurableMapper;
@ApplicationScoped
public class DefaultMapper extends ConfigurableMapper {
}
Законно ли использовать орику дляглубокая копия?Или лучше использовать SerializationUtils для достижения этой цели?
Причина TODO
заключается в следующем: каждый раз, когда мы вызываем clone()
orika использует отражение для вычисления фактического отображения.К сожалению, мы не можем использовать инъекцию, потому что мы находимся внутри сущности.
Мы могли бы также создать конструктор, в котором мы вручную сопоставляем каждое поле.Это не решение здесь, потому что есть много полей с глубокой вложенностью.Кроме того, если добавлен новый столбец, существует высокий риск забыть настроить отображение.
Есть ли у вас лучшее решение, чем использовать orika?Является ли SerializationUtils альтернативой вообще?