【发布时间】:2014-11-24 09:33:23
【问题描述】:
当我运行下面的代码时,ColdFusion 9(更新到最新版本)为 billingaddress cfc 生成了一个错误的(恕我直言)XML 文件。即,它包括base.cfc 的属性。这是一个错误,是我遗漏了什么,还是这是预期的行为?
Application.cfc
component
{
this.name = "ormtest";
this.mappings["/model"] = expandPath( "./model" );
this.datasource = "mingo";
this.ormEnabled = true;
this.ormSettings = {
CFCLocation = "/model",
dbcreate = "dropcreate",
savemapping = true
};
function onRequestStart()
{
ormreload();
}
}
base.cfc
component mappedSuperClass = "true"
{
property fieldType = "id" name = "id" generator = "guid";
property fieldType = "column" name = "deleted" ORMType = "boolean" default = "0" notnull = "true";
property fieldType = "column" name = "sortorder" ORMType = "integer";
property fieldType = "column" name = "label";
}
地址.cfc
component extends = "model.base"
persistent = "true"
table="address"
discriminatorColumn = "discriminator"
{
property name = "address";
}
帐单地址.cfc
component extends = "model.address"
persistent = "true"
table="address"
discriminatorValue = "billingaddress"
{}
帐单地址.hbmxml
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<subclass discriminator-value="billingaddress"
entity-name="billingaddress" extends="cfc:model.address"
lazy="true" name="cfc:model.billingaddress">
<property name="deleted" type="boolean">
<column name="deleted" not-null="true"/>
</property>
<property name="sortorder" type="integer">
<column name="sortorder"/>
</property>
<property name="label" type="string">
<column name="label"/>
</property>
</subclass>
</hibernate-mapping>
【问题讨论】:
-
你有 dbcreate = "dropcreate" 和 savemapping = true 的任何原因?在你的 onRequestStart() 中还有一个 ormreload() 将导致你的模型在每个请求上都被重建。将它放在 onApplicationStart() 中更正常。
-
是的,原因是,这只是一个测试设置,以验证我的理智。在实时和开发环境中,我们使用不同的设置运行(dbcreate="none" for live)
标签: hibernate orm coldfusion coldfusion-9