[英]Coldfusion ORM: delete in cascade
我不是 coldfusion orm 方面的專家,我打電話給你,因為我在扯頭發!
除了刪除具有 2 個一對多關系“文本”和“獎勵”的實體“操作”之外。
當我嘗試刪除只有文本但沒有獎勵的動作時,一切都很好。 Hibernate 刪除操作記錄和子文本。 這就是我想要的!
但是當動作同時有文本和獎勵時,我得到了這個錯誤:
Column 'bonus_actionId' cannot be null
Root cause :java.sql.BatchUpdateException: Column 'bonus_actionId' cannot be null
為什么 Hibernate 在刪除 Action 之前不刪除 Bonus? 就像文本一樣?
謝謝
動作實體:
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";
}
不知何故,Hiberate 會首先將實體設置為 Null(成為孤兒),然后刪除孤兒。
所以.. 從 Bonus.cfc 中的屬性action
中刪除notnull="true"
就可以了。
您可以通過將inverse="true"
添加到關系的外鍵擁有方來保持您的notnull="true"
並讓級聯正常工作。
在您的情況下,這將在Action
實體上:
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"
inverse="true"
lazy="true";
/* ... */
property name="bonus"
type="array"
fieldtype="one-to-many"
cfc="Bonus"
fkcolumn="bonus_actionId"
singularname="bonus"
cascade="all-delete-orphan"
inverse="true"
lazy="true";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.