イメージを参照する「モノ」がなくなったときに、Hibernate にイメージを自動的に削除させるには、どのような種類のカスケード タイプを使用できますか? (基本的に、Hibernateでのガベージコレクションのようなものです)
データベース: Thing テーブル - 画像テーブルは多対 1 であるため、多くの Thing が同じ画像を参照できます。
エンティティ: モノ、イメージ
多対一なので、例えば5つのものが1つの画像に関連しています。
今、私は:
public void delete(Thing thing)
{
if (countReferences(thing.getImage()) > 1)
{
thing.setImage(null);
}
getSession().delete(thing);
}
countReferences を行わず、関係に CascaseType.REMOVE がある場合、Hibernate は Image も削除しようとします。イメージがまだどこかで参照されている場合、データベース内の制約が発生し、例外が発生します。
要するに、それを参照している最後のものが削除されたときに、休止状態にそのイメージを削除するように指示するにはどうすればよいですか?
です
org.hibernate.event.PreDeleteEventListener
おそらく解決策?