Какой тип каскада я могу использовать и где, чтобы Hibernate автоматически удалял изображение, когда больше нет «вещей», ссылающихся на него?(в общем-то, сбор мусора в Hibernate)
База данных: Таблица вещей - Таблица изображений, многие к одному, поэтому многие вещи могут ссылаться на одно и то же изображение.
Объекты: вещь,Image
Это много к одному, поэтому, например, 5 вещей имеют отношение к одному изображению.
Прямо сейчас я делаю:
public void delete(Thing thing)
{
if (countReferences(thing.getImage()) > 1)
{
thing.setImage(null);
}
getSession().delete(thing);
}
Если я наденуне делайте countReferences, и в отношениях есть CascaseType.REMOVE, Hibernate также пытается удалить изображение.Ограничение в базе данных срабатывает, когда изображение еще где-то ссылается, вызывая исключение.
Итак, вкратце, как я могу сказать hibernate удалить Image, когда последняя вещь, ссылающаяся на него, удалена?
Является ли
org.hibernate.event.PreDeleteEventListener
возможно решением?