2016-07-22 59 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

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

相关问题