1

父表

    <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 设置为预期的值...请帮助!

4

1 回答 1

1

我认为您必须在父实体的映射all,delete-orphan上使用该属性的值。cascade您还必须通过设置inverse="true"父实体映射来设置双向关系的负责人。

于 2013-02-28T21:59:54.580 回答