0

我有 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 将负责从连接表中删除,这很好。

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

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

4

1 回答 1

1

您所说的有时被称为孤儿删除。JPA 可以处理一对多关系(如果您使用的是 JPA 2.0 或更高版本,则 OneToMany 注释上的 deleteOrphans 属性)但不能处理多对多关系。您要么必须自己处理它,要么查看您的 JPA 提供程序是否有能力。

于 2012-04-07T15:34:50.903 回答