當我更新一個CF ORM對象時,如果其中一個孩子不在那裏,它只會將鏈接值設置爲null,然後不會刪除該項目或其任何子項。以下是我父對象和後續子對象的定義。 (掛它的孩子被定義爲好)ColdFusion ORM不刪除或級聯
公告:
<cfcomponent persistent="true" accessors="true" table="bulletins">
<cfproperty name="id" column="ID" fieldtype="id" generator="identity" ormtype="int" unsavedvalue="0">
<cfproperty name="affectedModels" fieldtype="one-to-many" cfc="affectedModel" fkColumn="bulletinId" cascade="all-delete-orphan" >
</cfcomponent>
AffectedModel:
<cfcomponent persistent="true" accessors="true" table="affectedModels">
<cfproperty name="id" column="ID" fieldtype="id" generator="identity" ormtype="int" unsavedvalue="0">
<cfproperty name="bulletin" fieldType="many-to-one" cfc="bulletin" column="bulletinId" notNull="true" >
<cfproperty name="affectedYears" fieldtype="collection" type="array" fkcolumn="affectedModelId" table="affectedYears" elementColumn="prodYear" elementType="string" lazy="false" cascade="all">
</cfcomponent>
這一切都工作的很好補充和更新,但如果我刪除了某個「 affectedModel「全部CF ORM確實爲null bulletinId字段。它不會刪除受影響的表中的行或後續行。
任何有關爲什麼會發生這種情況,或者我可能會做錯什麼的建議將不勝感激。
當我說刪除「affectedModel」時,我指的是在受影響的模型陣列中使用少一個「affectedModel」來保留公告對象。這將導致affectedModels表中的bulletinID字段爲空,但不會刪除受影響的年份表中受影響年份的行或其後續數組。如果我從受影響的模型中刪除受影響的年份,我也會得到相同的結果。此外,我試圖使用inverse =「true」,結果相同,只是一個null bulletinId,沒有任何刪除。 – 2014-08-29 13:36:14
聽起來像你需要'entityDelete()'然後你想要刪除受影響的模型。 – 2014-08-29 17:15:12
公告對象的entityDelete()是否足夠,或者是否需要深入公告對象並遍歷受影響的模型的列表,然後在公告中調用entityDelete(),然後在公告上最後進行遍歷? – 2014-09-04 14:28:01