父表
<property name="buyerGroupName" type="string" column="BUYER_GROUP_NAME" />
<property name="description" type="string" column="DESCRIPTION" />
<property name="approvalPathId" type="int" column="APPROVAL_PATH_ID" />
<property name="active" type="int" column="ACTIVE" />
<property name="createdOn" type="timestamp">
<column name="CREATED_ON" length="20" not-null="true" />
</property>
<set name="buyers" table="buyers" cascade="all" >
<key>
<column name="BG_ID" not-null="true" />
</key>
<one-to-many class="com.sg.beans.Buyers" />
</set>
</class>
</hibernate-mapping>
子表映射
<hibernate-mapping>
<class name="com.sg.beans.Buyers" table="buyers" >
<id name="id" type="int" column="ID">
<generator class="increment" />
</id>
<property name="loginId" type="int" column="LOGIN_ID" />
<many-to-one name="buyerGroup" class="com.sg.beans.BuyerGroup" fetch="select" cascade="all" >
<column name="BG_ID" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
删除方法..传递父对象以删除
public Boolean deleteBuyerGroup(BuyerGroup bg){
try {
session.delete(bg);
session.getTransaction().commit();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
以下是错误
buyerGroup.getBuyerGroupId()1
Hibernate: update buyers set BG_ID=null where BG_ID=?
org.hibernate.exception.ConstraintViolationException: Column 'BG_ID' cannot be null
我做了调试并确保将BG_ID设置为预期的值...请帮忙!
答案 0 :(得分:1)
我认为您必须在父实体映射的all,delete-orphan
属性上使用cascade
值。
您还必须通过在父实体映射上设置inverse="true"
来设置双向关系的责任。