2016-07-22 45 views
2

我有PolicyDO和PolicyDocumentDO.relation它們之間是如下HibernateException的:與級聯集合=「全刪除,孤兒」不再由所擁有的實體實例引用

PolicyDO.hbm.xml 

<bag name="listPolicyDocumentDOList" cascade="all-delete-orphan" lazy="false" inverse="true"> 
      <key column="POLICYSEQ" /> 
      <one-to-many class="dataobjects.policy.PolicyDocumentDO" /> 

PolicyDO.java 
protected List<PolicyDocumentDO> policyDocumentDOList = new ArrayList<PolicyDocumentDO>(); 
public java.util.List<PolicyDocumentDO> getListPolicyDocumentDOList() { 
    return this.policyDocumentDOList; 
    } 

    public void setListPolicyDocumentDOList(java.util.List<PolicyDocumentDO> list) { 
     policyDocumentDOList.clear(); 
     policyDocumentDOList = list; 
    } 


    PolicyDocumentDO.hbm.xml 

    <many-to-one name="parentGuidObj" class="dataobjects.policy.PolicyDO" not-null="true" > 
      <column name="POLICYSEQ" /> 
    </many-to-one> 

當曾經我試圖從查詢數據庫類似下面

session = sessionFactory.openSession(); 
Query query = session.createQuery(strBuff.toString()); 
List listQuery = query.list(); 

我獲得以下錯誤

org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: 

dataobjects.policy.PolicyDO.listPolicyDocumentDOList

所以google搜索我下面的變化,而在PolicyDO

public void setListPolicyDocumentDOList(java.util.List<PolicyDocumentDO> list) { 
     policyDocumentDOList.clear(); 
     policyDocumentDOList = list; 
    } 

設置listPolicyDocumentDOList然後還我收到上述錯誤之後。 我還能做些什麼來解決這個錯誤。 由於

+0

嘗試[此](http://stackoverflow.com/a/5587892/2586617) –

回答

4

變化

public void setListPolicyDocumentDOList(java.util.List<PolicyDocumentDO> list) { 
    policyDocumentDOList.clear(); 
    policyDocumentDOList = list; 
} 

public void setListPolicyDocumentDOList(java.util.List<PolicyDocumentDO> list) { 
    policyDocumentDOList.clear(); 
    policyDocumentDOList.addAll(list); 
} 
+0

微妙,但是有效。謝謝。 –

相關問題