在Google App引擎中java jpa一对多的关系,我如何删除子元素。 例如
Class Parent{
// key defined here
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
private List<Child> childs = null;
.
.
.
}
Class child{
//key defined here too
@ManyToOne
private Parent parent;
.
.
.
}
我创建了
Parent parent=new Parent()
parent.getChilds().add(new Child(1));
parent.getChilds().add(new Child(2));
//save parent
.
.
现在我想删除孩子1和2并添加一个新孩子3
Parent p=//getParent
p.setChilds(new ArrayList<Child>())//remove all older childs
parent.getChilds().add(new Child(3));//adding new child 3
.
.
但是,当我再次获取同一个父母时,我拥有所有3个孩子但不仅仅是孩子3。
任何人都可以指导我。
谢谢, Ramesh.V
答案 0 :(得分:0)
也许
parent.getChilds().clear();
因为这样可以节省删除和重新创建列表,并且可能具有解决某些GAE问题的额外好处。 PS。复数的“孩子”是“孩子”!
答案 1 :(得分:0)
您可以尝试从拥有方删除关系 - 在本例中为Child#parent。因此,对于父集合中的每个子节点,请尝试:删除子元素或将父元素设置为null。类似的东西:
Parent p = //getParent
List<Child> children = p.getChildren();
for (Child c : children) {
c.setParent(null);
}
children.clear();
children.add(new Child(3));