我不是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