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 が結合テーブルからの削除を処理します。これで問題ありません。

私が達成したいのは、それを指す記事がなくなったら、Image エンティティも削除されることです。問題は、画像がファイルに保存されていることです。そのため、それらも処理する何らかの種類のハンドラーが必要です。

それを実装する最良の方法は何ですか?

4

1 に答える 1

1

あなたが話していることは、孤立した削除として知られていることがあります。JPAは、1対多の関係(JPA 2.0以降を使用している場合はOneToManyアノテーションのdeleteOrphans属性)では処理できますが、ManyToManyでは処理できません。自分で処理するか、JPAプロバイダーに機能があるかどうかを確認する必要があります。

于 2012-04-07T15:34:50.903 に答える