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>

Delete メソッド ..削除する親オブジェクトを渡す

   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 に答える