Как преобразовать сущность из одного типа в другой в ColdFusion ORM? - PullRequest
0 голосов
/ 05 октября 2011

Допустим, у меня есть три объекта: 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, не создавая для него новую запись?

1 Ответ

2 голосов
/ 05 октября 2011

Как я могу сделать это, просто изменив тип компании, без необходимости создавать новую запись для него?

Вы не можете. Вы используете mappedSuperClass, то есть вы храните StandardCompany и CompanyTemplate в отдельной таблице.

Если вы используете Таблица для подкласса с дискриминатором , вы можете изменить значение discriminatorColumn, тогда вы можете изменить тип «без необходимости создания новой записи».

...