CFML (Railo) で親/サブ アプリケーション構造に取り組んでおり、永続的な (ORM) CFC の拡張に苦労しています。
私が望むのは、永続的な CFC が親アプリケーションに存在することです。それらには、さまざまなプロパティと、コア機能を扱ういくつかの関数が含まれます。
私のサブアプリでは、サブアプリ固有のプロパティを宣言する ORM CFC を拡張したいと考えており、サブアプリのニーズに固有の新しい関数を追加できるようにしたいと考えています。親アプリの CFC のコードに触れることなく、必須です。
サブアプリは独自のデータソースを使用するため、アプリケーションの起動時にサブのデータベースで生成された ORM テーブルが表示されることを期待しています。親アプリ (スタンドアロンで実行され、独自のデータソースがある) を起動すると、そこに生成されたテーブルが問題なく表示されます。ただし、子アプリを起動すると、(どちらのデータベースにも) テーブルは生成されません。
親 CFC に追加mappedSuperclass='true'
して、子アプリで親 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>