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

时间:2014-09-06 12:23:02

标签: java jpa playframework-2.0 ebean

在下面的代码中,我为save()类覆盖delete()CityImage,以便在从数据库添加/删除图像时从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();
    }
}

问题:当我在delete()对象上调用City时,我希望Play / Ebean在引用它的所有delete()个对象上调用CityImage,但是这个没有发生。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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