在JPA模型中级联删除图像

时间:2012-04-07 11:49:04

标签: java jpa

我有JPA实体,文章和图像之间有关系:

Article {
   @Id
   Long id;

   @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
   @JoinTable(inverseJoinColumns = @JoinColumn(name = "image_id")) 
   Set<Image> images;

   ...
}


Image {
    @Id
    Long id;

    ...
}

要删除从文章中的设置中删除图像,我可以使用this.images.remove(image),JPA将负责从连接表中删除,这很好。

我想要实现的是,一旦没有文章指向它,Image实体也将被删除。问题还在于,图像存储在文件中,因此必须有某种处理程序,它们也会处理它们。

实施它的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您所谈论的内容有时被称为孤儿删除。 JPA可以处理一对多关系(OneToMany注释中的deleteOrphans属性,如果您使用的是JPA 2.0或更高版本),而不是ManyToMany。您将需要自己处理它或查看您的JPA提供商是否具备此功能。