我可以使用什么样的级联类型,哪里有Hibernate自动删除图像时没有更多的“东西”引用它? (基本上是Hibernate中的Garbagecollecting)
数据库:事物表 – 图像表,是多对一的,所以很多东西可以引用相同的图像.
实体:事物,形象
它是多对一的,所以例如5个事物与一个图像有关系.
现在,我这样做:
public void delete(Thing thing)
{
if (countReferences(thing.getImage()) > 1)
{
thing.setImage(null);
}
getSession().delete(thing);
}
如果我没有执行countReferences,并且关系上有一个CascaseType.REMOVE,Hibernate也会尝试删除Image.当图像仍被引用到某处时,数据库中的约束将触发,从而导致异常.
那么,简而言之,当删除引用它的最后一件事时,如何告诉hibernate删除Image?
是一个
org.hibernate.event.PreDeleteEventListener
也许是解决方案?