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)
公开列表图像;