Добавить в EntityCopyUtils поддержку копирования композитных сущностей с Cardinality One

Добрый день.

Использую платформу 6.10.

Класс EntityCopyUtils очень хорошо помогает эмулировать функционал rollback при работе с неперситивными сущностями, данные для которых берутся из json со множеством вложенностей. Это приводит к тому, что большинство неперсистивных сущностей имеет свойства в виде композитных сущностей. В случаях когда указанные свойства имеют сardinality MANY, класс EntityCopyUtils производит глубокое копирование свойства, но когда сardinality неравно MANY класс EntityCopyUtils просто передает значение свойства целевой сущности.

Пожалуйста рассмотрите возможность добавления глубокого копирования свойств сущностей представленных в виде композитных сущностей с сardinality one при использовании класса EntityCopyUtils.

Спасибо.

Добрый день!

Класс com.haulmont.cuba.gui.data.impl.EntityCopyUtils является служебным и никогда не предназначался для прикладного использования. Более того, он используется только в legacy API экранов.
Мы не планируем дорабатывать этот класс. Если вам нужна его функциональность, скопируйте его к себе в проект и доработайте.

1 симпатия

Добрый день, спасибо.

P. S. Можете подсказать в сторону чего смотреть чтобы реализовать указанный ранее функционал для неперсистивных сущностей?

Очевидно вместо строки

if (value != null && srcProperty.getRange().getCardinality().isMany()
                            && srcProperty.getType() == MetaProperty.Type.COMPOSITION) {

вам нужно по отдельности обрабатывать srcProperty.getRange().getCardinality().isMany() и не-isMany(). Во втором случае просто вызывать copyCompositions() и проставлять результат в свойство-назначение.

Добрый день, Константин.

Я имел ввиду в 7 платформе есть ли класс выполняющий аналогичные действия.

Спасибо.