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

标签 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 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();
    }
}

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

最佳答案

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

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

关于java - 在 Play Framework 中删除父实体时,不为子实体调用 Model.delete(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700203/

相关文章:

java - 从其他类调用代码

java - JPA eclipselink, mysql/myisam bulik 插入

playframework-2.0 - 如何为大文件代理 Web 服务?

java - 玩! Java 8 的框架支持 可选

hibernate - JPA/Hibernate - 单向 OneToOne 关联上的反向连接?

scala - java.lang.ClassNotFoundException : play. core.server.NettyServer 当更多 Play 库添加到 build.sbt 时

java - 具有固定宽度的 JTextPane 首选大小

java - 默认接口(interface)方法如何调用其超对象的方法? (例如克隆)

Java - ArrayList 和创建一个对象

java - 是否有 jpa 或 hibernate 属性使所有查询不区分大小写