2013-03-19 63 views
1

我需要一些帮助。 我有两个班,一对多的关系:玩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()儿童实体不从数据库中删除。

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

而且下一次我find.byId - 所有的孩子在那里,就像他们从来没有被删除:(

播放2.0.4,内存数据库

请我知道,如果任何其他。需要informaition。

回答

5

我与这一些修修补补,实现了为什么这是行不通的。

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

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

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

+0

它没有帮助( – Dfire 2013-03-21 12:49:10

+0

更新的答案确实是一个新的答案。不管怎么样,请尝试 – stian 2013-03-21 13:36:59

+0

哦,非常感谢它活着!!! – Dfire 2013-03-21 14:58:48