2014-09-06 42 views
2

在下面的代码中,我将覆盖CityImage类的save()delete(),以便在添加/删除Amazon S3时上传/移除图像来自数据库。在播放框架中删除父项时,没有为子实体调用Model.delete()

@Entity 
public class City extends Model { 

    @Id 
    public Long id; 

    @OneToMany(cascade=CascadeType.ALL) 
    public List<CityImage> images; 
} 

@Entity 
public class CityImage extends Model { 

    @Id 
    public Long id; 

    @ManyToOne 
    public City city; 

    @Override 
    public void delete() { 
     deleteFromAmazonS3(); 
     super.delete(); 
    } 

    @Override 
    public void save() { 
     super.save(); 
     saveOnAmazonS3(); 
    } 
} 

的问题:当我叫delete()一个City对象上,我希望播放/ Ebean来调用引用它的所有CityImage对象delete(),但这种情况不会发生。任何想法为什么?

回答

0

您应该将orphanRemoval添加到您的关联中。

@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true) 
public List<CityImage> images;