Hibernate缺乏对一对一和多对一关系的删除 - 孤儿支持的解决方法?

Bod*_*den 15 hibernate

Hibernate不支持"删除 - 孤立"级联一对一或多对一关系.我最近发现了这一点,它给了我一个严重的头痛.我的模型中有几个类被设计成使得孩子在父母之外没有真正的世界意义.我只为父级提供一个DAO,而不为子类提供单独的DAO.

这有效:

parent.getChild().setProperty("something");
parentDao.save(parent);
Run Code Online (Sandbox Code Playgroud)

这没有做任何事情:

parent.setChild(null);
parentDao.save(parent);
Run Code Online (Sandbox Code Playgroud)

这非常不幸,因为现在我必须重新考虑我的DAO层和服务层的一些操作.

有没有人以优雅的方式解决这个限制?我真的只想关注持久的父对象.在这种特殊情况下,除了使Hibernate满意之外,没有理由处理子持久性,并且仅在删除子节点的情况下.

Zoi*_*erg 4

这似乎是他们可能解决的框架的一个缺点,希望很快就能解决

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

该罚单于 2007 年开出,最近一次抱怨该问题的帖子是在一个月前。

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

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