Hibernate的变通方法';s缺乏对一对一和多对一关系的删除孤立支持?

Hibernate的变通方法';s缺乏对一对一和多对一关系的删除孤立支持?,hibernate,Hibernate,Hibernate不支持一对一或多对一关系的“删除孤立”级联。我最近发现了这一点,这让我头痛不已。在我的模型中,我有几个类,它们的设计使得孩子在父母之外没有任何真实的意义。我只有一个DAO用于父类,而没有一个单独的DAO用于子类 这项工作: parent.getChild().setProperty("something"); parentDao.save(parent); 这没有任何作用: parent.setChild(null); parentDao.save(parent); 这是非

Hibernate不支持一对一或多对一关系的“删除孤立”级联。我最近发现了这一点,这让我头痛不已。在我的模型中,我有几个类,它们的设计使得孩子在父母之外没有任何真实的意义。我只有一个DAO用于父类,而没有一个单独的DAO用于子类

这项工作:

parent.getChild().setProperty("something");
parentDao.save(parent);
这没有任何作用:

parent.setChild(null);
parentDao.save(parent);
这是非常不幸的,因为现在我不得不重新考虑我的DAO层和我的服务层的一些操作


有没有人以优雅的方式绕过这个限制?我只想关心持久化父对象。在这种特殊情况下,除了让Hibernate高兴之外,没有理由处理子持久性,只有在删除子持久性的情况下才需要处理。

这似乎是他们可能解决的框架中的一个倒退,希望很快能够解决

这张罚单是在2007年开通的,最近一篇抱怨这个问题的帖子是在一个月前发布的

我所做的是在我的对象上放置一个名为isMarkedForDeletion的属性。如果返回true,我将让我的dao或服务执行显式删除。它肯定不如delete-orphan好,但在spring+hibernate框架中工作得足够好


我会关注这篇文章,因为这是一个非常重要的问题。

这里描述的解决方法对我来说很有效。它使用@OneToMany关联和“多”端的单个元素来实现@OneToOne关联并解决删除孤立项问题。

在子表上的更新触发器上写入数据库。如果父键为空,则从子项删除记录,在Hibernate 4.27中修复
(未测试)

这似乎是大约一年前解决的--@Savannah:如果关系不受约束,则
似乎支持
删除孤立项(请参阅)。我很难向自己解释这一点,因为一对一总是有一个引用键约束。你能在答案中添加更多内容吗