1

我需要帮助。我有两个具有 onetomany 关系的类:

@Entity
public class Parent extends Model{

  @Id
  public Long id;

  @OneToMany(fetch = FeatchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
  public List<Child> children;

}

@Entity
public class Child extends Model{

  @Id
  public Long id;

}

因此,当我调用 remove() 子实体时,不要从数据库中删除。

Parent parent = Parent.find.byId(id);
parent.children.remove(parent.children.get(0));
parent.save();

下次我 find.byId - 所有孩子都在那里,就像他们从未被删除一样:(

玩 2.0.4,inMemory 数据库。

如果需要任何其他信息,请告诉我。

4

1 回答 1

5

我对此做了一些修改,并意识到为什么这不起作用。

由于您具有没有任何连接表的单向关系,因此实际删除关联将意味着删除相应的子记录(或至少更新 parent_id 列)。EBean 不这样做可能是一件好事,因为它不知道/检查其他表是否与 Child 有外键关系。

您可以做的是明确指出没有其他表与子表有 FK 关系,它由 Parent “拥有”,并且 Ebean 在从关系中删除时完全删除实体是可以的。这是通过在 的属性上添加@PrivateOwned注释来完成的。childrenParent

这篇文章提示我:https ://groups.google.com/forum/?fromgroups=#!topic/ebean/dXPWpJCQkj8

于 2013-03-21T11:32:24.717 回答