如何在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字段。