Допустим, у меня есть три объекта: Company
, StandardCompany
и CompanyTemplate
, где Company
- базовый класс для двух других:
Company
/\
/ \
/ \
StandardCompany CompanyTemplate
И сопоставления компонентов:
component name="Company" mappedSuperClass="true"
{
property name="Name";
}
component name="StandardCompany" persistent="true" extends="Company"
{
property name="Owner";
}
component name="CompanyTemplate" persistent="true" extends="Company"
{
property name="UsageCount";
}
Пользователь должен иметь возможность конвертировать любой StandardCompany
в CompanyTemplate
и обратно. Я знаю, что могу создать новый CompanyTemplate
всякий раз, когда пользователь хочет преобразовать StandardCompany
:
function ConvertToTemplate(StandardCompany company)
{
var template = EntityNew("CompanyTemplate");
// copy all properties from company to template
EntitySave(template);
}
Но это создаст новую запись и сломает все закладки старой компании. Я хотел бы иметь возможность просто преобразовать его в CompanyTemplate
без создания каких-либо новых записей. Я использую отображение таблицы на иерархию.
Как я могу сделать это, просто изменив тип Company
, не создавая для него новую запись?