У меня есть постоянная сущность, которую я использую в качестве шаблона:
Company
Locations
Departments
Employees
Другими словами, Company
содержит множество Locations
, которое содержит множество Departments
, которое содержит множество Employees
. У меня есть один Company
, настроенный как шаблон, который должен быть скопирован при создании новой компании. Тем не менее, этот шаблон является постоянным в базе данных. Я попытался использовать следующий код для его глубокого клонирования:
var template = EntityLoadByPK("Company", 13);
var company = Duplicate(template);
EntitySave(company);
Но я получаю сообщение об ошибке, в котором говорится, что объект не присоединен к сеансу Затем я попытался присвоить 0 всем идентификаторам перед сохранением:
company.setId(0);
for (location in company.getLocations())
{
location.setId(0);
// more nested for loops
}
Но я получаю похожую ошибку. Наконец, я попытался сделать прямую 1: 1 копию свойств:
var newCompany = EntityNew("Company");
newCompany.setName(company.getName());
newCompany.setCEO(company.getCEO());
// etc...
Но это становится все более громоздким, чем глубже идет объектный граф. Есть ли более простой способ глубокого клонирования персистентной сущности, чтобы получить совершенно новую временную сущность, включая все ее дочерние коллекции?