google app engine java jpa一对多删除

时间:2011-10-27 22:08:28

标签: java google-app-engine jpa

在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

2 个答案:

答案 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));