我试图删除一个孩子而不必通过父母(一对多)。我知道它通常会像:
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>
答案 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);