Hibernate已删除的子项保留在父列表中

时间:2016-06-30 20:47:33

标签: hibernate

我试图删除一个孩子而不必通过父母(一对多)。我知道它通常会像:

Parent p = db.getParent(parentId);
p.getChildList().remove(child);
db.update(p);

我必须做些什么才能允许这个吗?

db.delete(child);

当我这样做并再次检索父级时,它的子级列表中的值为空。我可以对xml映射文件执行某些操作以将其完全删除吗?

    <list name="child" inverse="false" cascade="all,delete-orphan">
        <key column="PARENTID" not-null="true"/>
        <list-index column="childOrder"/>
        <one-to-many class="Child" />
    </list>

    <property name="parentId" type="string" update="false" insert="false">
        <column name="PARENTID" not-null="false">
        </column>
    </property>
    <property name="childOrder" type="java.lang.Integer" update="false" insert="false">
        <column name="CHILDORDER" not-null="false">
        </column>
    </property>

1 个答案:

答案 0 :(得分:0)

也许这是你问题中的拼写错误,但为什么要删除childId呢?您应该使用子对象。

尝试此操作,如果尚未完成。

//Look up the child object and then use it.
Child c = (Child) session.get(Child.class, new Integer(childId));
p.getChildList().remove(child);         
session.saveOrUpdate(p);