【问题标题】:HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance [duplicate]HibernateException:拥有的实体实例不再引用具有 cascade="all-delete-orphan" 的集合 [重复]
【发布时间】:2016-11-26 06:04:51
【问题描述】:

我有PolicyDO和PolicyDocumentDO,它们之间的关系如下

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

所以在谷歌搜索后,我在 PolicyDO 中设置 listPolicyDocumentDOList 时做了以下更改

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

然后我也遇到了错误。 我还能做些什么来解决这个错误。 谢谢

【问题讨论】:

标签: java hibernate hibernate-mapping


【解决方案1】:

改变

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);
}

【讨论】:

  • 微妙但有效。谢谢。
  • 它工作正常,不知道背后的正确原因,可以帮助解释一下。
猜你喜欢
  • 2012-03-14
  • 2011-08-01
  • 2021-01-09
  • 1970-01-01
  • 2018-03-06
  • 2023-03-17
  • 2018-10-08
  • 2020-05-28
相关资源
最近更新 更多