我有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实体也将被删除。问题还在于,图像存储在文件中,因此必须有某种处理程序,它们也会处理它们。
实施它的最佳方法是什么?
答案 0 :(得分:1)
您所谈论的内容有时被称为孤儿删除。 JPA可以处理一对多关系(OneToMany注释中的deleteOrphans属性,如果您使用的是JPA 2.0或更高版本),而不是ManyToMany。您将需要自己处理它或查看您的JPA提供商是否具备此功能。