【问题标题】:google app engine java jpa one to many remove谷歌应用引擎 java jpa 一对多删除
【发布时间】:2026-02-12 23:45:02
【问题描述】:

在 Google App engine 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。

谁能指导我。

谢谢, 拉梅什.V

【问题讨论】:

    标签: java google-app-engine jpa


    【解决方案1】:

    也许会

    parent.getChilds().clear();
    

    因为这样可以节省删除和重新创建列表,并且可能具有解决某些 GAE 问题的额外好处。 PS。 “child”的复数形式是“children”!

    【讨论】:

    • 抱歉不工作...但是清除或设置一个新的空对象都在工作中没有任何区别...
    【解决方案2】:

    您可以尝试从拥有方删除关系 - 在本例中为 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));
    

    【讨论】: