2009-05-26 25 views
15

Hibernate不支持一对一或多对一关系的“delete-orphan”级联。我最近发现了这一点,这让我非常头疼。我在我的模型中有几个班,这些班被设计成使得孩子在父母之外没有真实世界的意义。我只有一个父级DAO,而不是一个单独的子级DAO。Hibernate缺乏对一对一和多对一关系的删除孤立支持的变通办法?

这工作:

parent.getChild().setProperty("something"); 
parentDao.save(parent); 

这并不做任何事情:

parent.setChild(null); 
parentDao.save(parent); 

这是非常不幸的,因为现在我不得不重新考虑我的DAO层和我的几个服务的操作层。

有没有人曾解决此限制在一个优雅的方式?我真的只想关注自己持续的父对象。在这种特殊情况下,除了使Hibernate开心以外,没有理由处理子持久性,只有在删除子项的情况下。

回答

4

这似乎是一场平局回到框架他们可能会解决,希望很快

http://opensource.atlassian.com/projects/hibernate/browse/HHH-2608

这票是在2007年开业,最新帖子抱怨的问题是近期在一个月前。

什么我做的是把所谓的isMarkedForDeletion我的对象上的属性。如果这返回true,我有我的道或我的服务做一个明确的删除。它绝对不如delete-orphan那么好,但它在spring + hibernate框架中运行得很好。

我会继续对这个职位的眼睛,因为这是一个非常重要的问题。

+0

现在看来,这是一年前解决有关删除记录/项目/休眠/浏览/ HHH-4726 – 2011-03-31 14:39:30

+1

@Savannah:它看起来像`删除,orphan`是支持``的情况下的关系是不是`constrained`(见http://docs.jboss.org/hibernate /core/3.6/reference/en-US/html/mapping.html#onetoone4)。我很难向我自己解释这一点,因为一对一总是有一个参照性的关键约束。 – 2011-05-24 17:37:53

-1

写入数据库。 http://opensource.atlassian.com - 如果父键为null从孩子