我有两个类,ProductConfiguration和SubProduct。休眠和从列表中删除
我要替换的配置中的子产品,我这样做:
productConfiguration.getSubProducts().clear();
productConfiguration.getSubProducts().addAll(newSubProducts);
在这一过程中,Hibernate的尝试设置父(产品配置)为空的ID,并然后更新数据库中的行。这会失败,因为父ID是外键,因此不能为空。
从ProductConfiguration映射到子产品:
<bag name="subProducts"
table="sub_product"
cascade="all-delete-orphan"
access="field"
lazy="false">
<key column="parent_id"/>
<one-to-many class="com.conscius.cpt.core.product.SubProduct"/>
</bag>
<many-to-one name="parentProduct"
class="com.conscius.cpt.core.product.ProductConfiguration"
column="parent_id"
access="field"
not-null="true"
cascade="none"/>
当子产品被删除时,您是否打算将子产品存在于数据库中?如果没有,看看这个:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/example-parentchild.html#example-parentchild-bidir – zmf 2012-01-12 15:13:28
我看到我错了什么地方。我错过了ProductConfiguration一侧的逆向语句。我会尽快添加答案。 – SimonPip 2012-01-12 15:26:50