Java 在Play Framework中删除父实体时,不会为子实体调用Model.delete()

Java 在Play Framework中删除父实体时,不会为子实体调用Model.delete(),java,jpa,playframework-2.0,ebean,Java,Jpa,Playframework 2.0,Ebean,在下面的代码中,我覆盖了CityImage类的save()和delete(),以便在从数据库添加/删除图像时从Amazon S3上载/删除图像 @Entity public class City extends Model { @Id public Long id; @OneToMany(cascade=CascadeType.ALL) public List<CityImage> images; } @Entity public class C

在下面的代码中,我覆盖了
CityImage
类的
save()
delete()
,以便在从数据库添加/删除图像时从Amazon S3上载/删除图像

@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();
    }
}
@实体
公共类城市扩展模型{
@身份证
公共长id;
@OneToMany(级联=级联类型.ALL)
公开列表图像;
}
@实体
公共类CityImage扩展模型{
@身份证
公共长id;
@许多酮
公共城市;
@凌驾
公共作废删除(){
deleteFromAmazonS3();
super.delete();
}
@凌驾
公共作废保存(){
super.save();
saveOnAmazonS3();
}
}

问题是:当我在
City
对象上调用
delete()
时,我希望Play/Ebean在引用它的所有
CityImage
对象上调用
delete()
,但这不会发生。你知道为什么吗?

你应该在你的协会中添加

@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true)
public List<CityImage> images;
@OneToMany(cascade=CascadeType.ALL,orphan=true)
公开列表图像;