我不是Coldfusion orm的專家,我打電話給你的幫助,因爲我拉我的頭髮!Coldfusion ORM:級聯刪除
我除了刪除一個有兩個關係的實體'行動'一對多,'文本'和'獎金'。
當我嘗試刪除只有文本但沒有獎勵的操作時,一切正常。 Hibernate刪除Action記錄和子文本。這是我想要的!
但當行動既有文本和獎金,我得到這個錯誤:
Column 'bonus_actionId' cannot be null
Root cause :java.sql.BatchUpdateException: Column 'bonus_actionId' cannot be null
爲什麼Hibernate不刪除之前的行動刪除紅利?就像它是爲文本完成的?
感謝
行動實體:
component {
property name="id" column="action_id" type="numeric" fieldtype="id" generator="native";
/* ... */
property name="texts" type="array"
fieldtype="one-to-many" cfc="Text" fkcolumn="text_actionId" singularname="text"
cascade="all-delete-orphan" lazy="true";
/* ... */
property name="bonus" type="array"
fieldtype="one-to-many" cfc="Bonus" fkcolumn="bonus_actionId" singularname="bonus"
cascade="all-delete-orphan" lazy="true";
}
文本實體:
component {
property name="id" column="text_id" type="numeric" fieldtype="id" generator="native";
/* ... (properties without relationships */
property name="action" fieldtype="many-to-one" fkcolumn="text_actionId" cfc="Action" notnull="false" lazy="true";
}
獎金實體:
component {
property name="id" column="bonus_id" type="numeric" fieldtype="id" generator="native";
/* ... (properties WITH relationships */
// Parent
property name="action" fieldtype="many-to-one" fkcolumn="bonus_actionId" cfc="Action" notnull="true" lazy="true";
}
的澄清好了THX。 – LarZuK 2011-05-30 19:01:54
可以保持notnull =「true」並仍然享受自動抑制? 沒有行動就不能存在獎勵,我發現以前的行爲很有用。 我知道我可以使用ORM事件來處理Action preDelete並手動刪除所有的孩子,但是就像它是「自然的」,我認爲它比在Hibernate中實現的要好。它是 ? – LarZuK 2011-05-30 19:08:53
我不確定,但這就是Hibernate的「全部刪除孤兒」的工作原理...... – Henry 2011-05-30 21:21:52