玩2.0。 Ebean。 OneToMany孤儿拆除了

时间:2013-03-19 13:22:08

标签: java playframework-2.0 ebean

我需要一些帮助。 我有两个关于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()时,Child实体不会从DB中删除。

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

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

播放2.0.4,inMemory数据库。

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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