2013-02-28 96 views
1

父表 删除父母与子女在一对多映射在Hibernate中

<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设置的值,它期待...请帮助!

回答

1

我想你将不得不在cascade属性上使用父实体映射的all,delete-orphan值。 您还必须通过在父实体映射上设置inverse="true"来设置双向关系的责任。

+0

它仍然给我同样的错误 – ashlesha 2013-02-28 22:10:07

+0

你放:'cascade ='all,delete-orphan''? – benzonico 2013-02-28 22:12:45

+0

是的,我为买家标记在parent.hbm文件中做了所有级联 – ashlesha 2013-02-28 22:18:31