我有一个对象A与@onetoone对象B,所以对象A包含对对象B的ID的引用,我想删除数据库中的对象B,包括对象A的参考。我想知道最好的解决方案是什么。我希望将对象A上的属性b设置为null,当我想要执行删除时,我的对象将被分离。我已经尝试了几种解决方案,我已经看到了很多例外情况:-p使用休眠删除行和引用使用分离对象
回答
你试过类似的东西吗?
ojbecttA.setB(null);
session.update(objectA);
session.delete(objectB);
最适当的方式,在我看来,是先
- 设置为null属性,
- 然后删除你要删除的实体撇清这两个实体。
我发现一个工作“解决方案”,通过检索对象A和B使用他们的ID,然后像你说的那样去做。尽管如此,5行代码来执行一个简单的任务不能是我想最好的解决方案... – 2011-05-03 09:15:36
应该有一种方式来附加和更新在一个调用中,我认为你可以用update()来做到这一点,但也许merge()会做到这一点。基本上,正如Nobody先生所说的,在更新之前您需要附加实例。 – Eric 2011-05-03 12:37:44
除了基于Hibernate的解决方案之外,您还可以通过声明外键为ON DELETE SET NULL
来指示数据库自动执行此操作。
我想知道这是否有一个注释... – 2011-05-03 09:16:39
- 1. 休眠 - 删除对象引用而不删除对象
- 2. 休眠删除使用HQL
- 3. ManyToMany删除使用休眠
- 4. 休眠对象不分离
- 5. 休眠。删除对象
- 6. 休眠:删除子对象
- 7. 休眠 - 删除对象
- 8. 休眠 - 如何在分离的对象上级联删除
- 9. 删除休眠相关对象和Spring
- 10. 级联删除的主键和分区键使用休眠
- 11. 删除使用组合键休眠
- 12. 休眠删除使用标准
- 13. 休眠不使用索引
- 14. 休眠删除用户
- 15. 休眠删除对象而不删除相关对象
- 16. 使用休眠排除值
- 17. 休眠脏对象的使用
- 18. 使用休眠加载对象
- 19. 使用条件查询对象休眠
- 20. 索引和使用休眠搜索
- 21. 不能使用休眠插入日期对象到PostgreSQL Timestamp列使用休眠
- 22. 从休眠会话中删除对象
- 23. 删除休眠相关对象
- 24. 使用休眠标准进行分页
- 25. 使用分页与Struts 2和休眠
- 26. 使用Java SQL部分数据删除休眠
- 27. 休眠删除相关表使用删除HQL?
- 28. 休眠删除行和外键行ManyToOne
- 29. 使用休眠方式多对一地删除
- 30. 休眠一对多使用连接表和休眠注释
你能指定你尝试过什么吗?如果您的对象被分离,我假设您正在使用查询来删除这些实体。 – 2011-05-03 09:04:10
我不使用查询吗?我希望我可以用Eric的回答来使用这些对象吗? – 2011-05-03 09:18:17
你说实体是分离的。正如你在埃里克答案的评论中所写的那样,如果没有先附加它们,就没有办法修改它们。你可以用查询来做,而且速度更快(就性能而言)。 – 2011-05-03 09:39:40