如何在ColdFusion Form中将实体从一种类型转换为另一种类型?

如何在ColdFusion Form中将实体从一种类型转换为另一种类型?,orm,coldfusion,type-conversion,coldfusion-9,Orm,Coldfusion,Type Conversion,Coldfusion 9,假设我有三个实体,Company、StandardCompany和CompanyTemplate,其中Company是其他两个实体的基类: Company /\ / \ / \ StandardCompany CompanyTemplate 以及组件映射: component name="Company" mappedSuperClass="t

假设我有三个实体,
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";
}
用户应该能够将任何
标准公司
转换为
公司模板
,然后再转换回来。我知道,只要用户想要转换标准公司,我就可以创建一个新的
CompanyTemplate

function ConvertToTemplate(StandardCompany company)
{
    var template = EntityNew("CompanyTemplate");
    // copy all properties from company to template
    EntitySave(template);
}
但这将创造一项新记录,打破旧公司的任何书签。我希望能够在不创建任何新记录的情况下将其转换为
CompanyTemplate
。我正在使用逐层次表映射

我如何通过修改
公司的类型来实现这一点,而不必为其创建新记录

我如何通过修改公司类型来实现这一点, 不必为它创建新记录

你不能。您使用的是mappedSuperClass,这意味着您将
StandardCompany
CompanyTemplate
存储在单独的表中


如果使用,您可以更改
鉴别器列的值
,然后您可以修改类型“无需创建新记录”。

您能解释一下公司模板是什么吗?因为它看起来不像是一个公司模板,所以不应该从公司超类继承。无论如何,我很确定你不能在cf9表单中进行类型转换,但我认为如果你用不同的方式构建你的继承人,你不需要这样做。例如,您可以在standardCompany和companyTemplate之间建立一对多关系。或者在standardCompany类中有一个isTemplate字段。