我需要一些帮助。 我有两个关于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数据库。
如果需要任何其他信息,请告诉我。
答案 0 :(得分:5)
我做了一些修补,并意识到为什么这不起作用。
由于您具有没有任何连接表的单向关系,实际删除关联意味着删除相应的子记录(或至少更新parent_id列)。 EBean不这样做可能是件好事,因为它不知道/检查是否有其他表与Child有外键关系。
你可以做的是明确指出没有其他表与子节点有FK关系,它由Parent“拥有”,并且当从关系中删除时Ebean完全删除该实体是可以的。这是通过在@PrivateOwned
的{{1}}属性上添加children
注释来完成的。
这篇文章让我知道:https://groups.google.com/forum/?fromgroups=#!topic/ebean/dXPWpJCQkj8