如何在hibernate映射文件中实施级联行为
我的数据库中有两个实体,模块和命令,它们处于一对多关系中,因为一个模块可以分配多个命令给它。 此外,命令仅在分配给模块时才有意义。 因此,我想定义一个级联策略,这样删除模块就会导致隐式删除所有相关命令 我使用的是Hibernate,我需要通过xml映射文件定义实体。 我正在使用以下配置: 在Module.hbm.xml中如何在hibernate映射文件中实施级联行为,hibernate,Hibernate,我的数据库中有两个实体,模块和命令,它们处于一对多关系中,因为一个模块可以分配多个命令给它。 此外,命令仅在分配给模块时才有意义。 因此,我想定义一个级联策略,这样删除模块就会导致隐式删除所有相关命令 我使用的是Hibernate,我需要通过xml映射文件定义实体。 我正在使用以下配置: 在Module.hbm.xml中 .... <list name="pendingCommands" table="COMMANDS" invers
....
<list name="pendingCommands" table="COMMANDS" inverse="true" lazy="false" cascade="all">
<key column="MODULE_ID" />
<list-index column="COMMAND_IDX" />
<one-to-many class="Command" />
</list>
....
。。。。
....
在Command.hbm.xml中
....
<many-to-one name="module" class="Module">
<column name="MODULE_ID" not-null="true" />
</many-to-one>
....
。。。。
....
这适用于hsqldb:通过org.hibernate.Session.delete删除模块对象总是成功的,如果模块有相关的命令对象,hibernate会首先删除它们
但是,在MS SQL上,同样的操作似乎失败了,我得到了如下错误:
DELETE语句与引用约束“FKxxx”冲突。数据库“yyy”、表“dbo.COMMANDS”、列“MODULE\u ID”中发生冲突。
它真的是依赖于实现的行为吗?
我的配置中是否有需要更改的内容
提前感谢您提供的任何提示