我正在研究 CFML (Railo) 中的父/子应用程序结构,并且正在努力扩展我的持久性 (ORM) CFC。
我希望我的持久性 CFC 存在于父应用程序中。它们将包含各种属性,以及一些处理核心功能的函数。
在我的子应用程序中,我想扩展声明任何子应用程序特定属性的 ORM CFC,并且我希望能够添加特定于子应用程序需求的新功能,以及覆盖任何核心功能,如果需要,无需触及父应用程序的 CFC 中的代码。
子应用程序使用自己的数据源,因此我希望在应用程序启动时看到子应用程序数据库中生成的 ORM 表。如果我启动父应用程序(独立运行并拥有自己的数据源),我可以毫无问题地看到那里生成的表。但是,如果我启动子应用程序,则不会生成表(在任一数据库中)。
我尝试添加mappedSuperclass='true'
到父 CFC 并在扩展父 CFC 的子应用程序中创建 CFC。我还尝试将父应用程序的 ORM 文件夹添加到 ORM 设置中的 CFCLocation 文件夹数组中。
我唯一可以用来作为 ORM 正在工作的指示,就是查看表是否是在数据库中生成的。如果有另一种方法可以查看 ORM CFC 是否正常工作,我很想听听!
这是一些要查看的代码:
父图像.cfc
<cfcomponent persistent="true" entityname="Image" table="tblImages_Base" extends="com.orm.SimpleBasePersistentObject" mappedSuperClass="true">
<!--- Identifier --->
<cfproperty name="sImageUUID" fieldtype="id" generator="assigned" setter="false" />
<!--- Properties --->
<cfproperty name="dtDateCreated" ormtype="timestamp" setter="false" />
<cfproperty name="dtLastUpdated" ormtype="timestamp" setter="false" />
<cfproperty name="sFileName" ormtype="string" />
<cfproperty name="iFileSize" ormtype="int" default="0" dbdefault="0" />
<cfproperty name="iWidth" ormtype="int" default="0" dbdefault="0" />
<cfproperty name="iHeight" ormtype="int" default="0" dbdefault="0" />
<cfproperty name="sImageFolder" ormtype="string" dbdefault="" />
<cfproperty name="Active" ormtype="boolean" default="0" dbdefault="0" notnull="true" />
<!--- Non persistant properties --->
<cfproperty name="sImagePath" type="string" persistent="false" />
<cfproperty name="sDefaultImageLocation" persistent="false" />
<!--- Many Images can have one image type --->
<cfproperty name="ImageType"
fieldtype="many-to-one"
cfc="ImageType"
fkcolumn="fk_sImageType"
fetch="join"
/>
</cfproperty>
</cfcomponent>
子图像.cfc
<cfcomponent persistent="true" entityname="Image" table="tblImages_Base" extends="core.orm.Image">
</cfcomponent>