我在两张桌子之间有多对一的关系 - 患者和研究。 当患者被删除时,我希望他的所有研究也将被删除。 hbm.xml 文件中的相关行是:
<class name="Study" table="Studies">
<id name="Uid">
<generator class="guid"/>
</id>
<many-to-one name="Patient" class="Patient" column="PatientId" lazy="false" cascade="all"/>
</class>
和
<class name="Patient" table="Patients">
<id name="Uid">
<generator class="guid"/>
</id>
<property name="PatientId"/>
<property name="Name" />
</class>
我正在使用 NHibernate 3.3.1 和 MySQL服务器。
通过设置cascade=all
,我希望在 MySQL 工作台中看到FK选项On Delete
将设置为CASCADE
,而是设置为RESTRICT
}。
当我手动将其更改为CASCADE
(通过工作台)时,一切正常。
有没有办法自动将其设置为CASCADE
?我还尝试在 hbm.xml 文件中设置on-delete=cascade
,但它不起作用。
有什么建议吗?
答案 0 :(得分:0)
首先,删除父项时自动删除子项的语法是......
cascade="all-delete-orphan"
(如果你想要所有和孤儿删除)。 NHibernate将遍历内存中的子项并删除它们。或
on-delete="cascade"
。数据删除将发生在数据库端。但是,在您的情况下,您尝试在many-to-one
映射上执行此操作。我不认为这是可能的。 AFAIK - 仅适用于one-to-many
映射。
解决此问题
或