`
haofeng82
  • 浏览: 144428 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

hibernate on-to-many 的级联操作解决步骤

阅读更多

这个问题很久以前我遇见过,找到了解决办法,原出处已经忘了,文章如下:

比如我们现在有一个Parent的实体,在Parent实体当中有一个children的Set
由于这个children的数据并非非常重要,为了方便,我们在修改parent的时候,做法经常都是
1,清空children全部删了,再把新的children全部加进去。
今天早上做这一方面工作的时候遇到一个问题,就是在更新parent的时候,报了一个
Don't dereference a collection with cascade="all-delete-orphan"
的异常,经常一半个小时的查资料和调试,终于找到了解决问题的办法
刚刚开始我的做法为:
parent = parentService.findParentById(id);
parent.getChildren.clear();
parent.setChildren(newChildren);
parentService.updateparent(parent);
这样做一定会报出一个Don't dereference a collection with cascade="all-delete-orphan"的异常
原来是,对于parent的children这个Set,它本身是一个持久的集合,该集合存在于hibernate的对象池当中,通过
parent.setChildren(newChildren)的设置之后,本身已经将parent对children集合的引用指到对象池外的一个集合。
后来查询资料后的做法为:
parent = parentService.findParentById(id);
parent.getChildren.clear();
parent.getChildren.addAll(newChildren);
parentService.updateparent(parent);
做了几次测试,问题解决。
hbm配置如下:
<set lazy="true" name="children" cascade="all,delete-orphan" inverse="true">
   <key column="PARENT_ID"/>
   <one-to-many class="Child"/>
</set>
另外,hibernate 3已经将cascade当中的选项做了修改,现在已经没有了all-delete-orphan这个选项,虽然hibernate
内部还是支持这个选项……

分享到:
评论

相关推荐

    hibernate many-to-many级联保存,级联更新,级联删除

    总结来说,Hibernate的Many-to-Many级联操作简化了数据库关系的维护,使得开发者可以更专注于业务逻辑,而不是繁琐的持久化细节。合理使用级联操作,能有效提高代码的效率和可维护性。但同时要注意,不当的级联操作...

    Hibernate one-to-many / many-to-one关系映射

    "Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    ### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...

    Hibernate many-to-many

    "Hibernate many-to-many"指的是Hibernate中处理多对多关联关系的一种方式。多对多关系是两个实体类之间存在的一种复杂关联,比如学生和课程之间的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 ...

    Hibernate one-to-many-annotation

    在Java世界中,Hibernate是一个非常...总结,`Hibernate one-to-many`注解是处理实体间多对一关系的关键工具,它简化了数据库操作,提升了开发效率。正确理解和使用这些注解,对于构建高效、可维护的Java应用至关重要。

    Hibernate Many-To-Many Mapping Annotations

    在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...

    纯JS---省份城市级联选择,

    纯JS---省份城市级联选择, (this);" style="width: 49%; float: left;"&gt; ; float: right;"&gt;&lt;/select&gt;

    省份-市-区及镇街道级联下拉框加载

    内部为四级的级联下拉框,分别为省份,市,县及区和镇及街道四级下拉框;(适用任何语言的纯HTML)详细截图可访问:https://blog.csdn.net/weixin_43972758/article/details/86510419 进行查询。

    Haar-like + adaboost +级联 人脸检测算法代码

    Haar-like + adaboost +级联 人脸检测算法代码,简洁的代码,已通过测试

    Hibernate的级联操作(增,删,该)

    在Hibernate中,级联操作(Cascading Operations)是一种高级特性,它使得对象之间的关联关系在数据库层面得以同步更新。当我们对一个实体对象进行操作时,可以设置级联属性,让这些操作自动传播到与之相关联的其他...

    第七章_Hibernate_-_级联策略

    第七章_Hibernate_-_级联策略 第七章

    proteus仿真--四个595级联数码管显示静态时钟

    在这个项目中,我们关注的是“proteus仿真--四个595级联数码管显示静态时钟”。这个设计利用了74HC595移位寄存器来驱动数码管,实现了一个24小时制的时间显示。 74HC595是一款8位串行输入/并行输出的移位寄存器,常...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    OpenCV4.0 计算机视觉项目源码 - 人脸检测基于Haar级联

    OpenCV4.0 计算机视觉项目源码 - 人脸检测基于Haar级联 目标:确定图片中人脸的位置,并画出矩形框。 1. 核心原理 (1)使用Haar-like特征做检测 (2)Integral Image : 积分图加速特征计算 (3)AdaBoost : 选择...

    android读取xml资源实现省-市-区的级联选择

    android读取xml资源实现省-市-区的级联选择 具体参考我的博客: http://blog.csdn.net/jiguangcanhen/article/details/41074703 改资源为ant架构,gradle架构,请下载之后自己用Eclipse导吧。

    threeH.rar_MATLAB H桥_cascade H-bridge_级联_级联H_级联H 桥

    "cascade H-bridge"或“级联H桥”则表示这是一个由多个H桥串联组成的电路结构,这样的设计可以提供更高的电压输出或增强系统性能。 在描述中,“三相级联H桥的研究和应用”意味着这个压缩包可能包含了关于三相电源...

    人工智能-深度学习-计算机视觉-LBP级联+CNN 回归定位车牌

    标题中的“人工智能-深度学习-计算机视觉-LBP级联+CNN 回归定位车牌”揭示了这个项目的核心技术,它涉及到人工智能领域的多个重要分支。在这个系统中,深度学习被用作核心工具,通过计算机视觉技术来实现对车辆车牌...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    - **级联操作**: 支持在实体之间定义级联操作,如删除一个实体时自动删除与之关联的其他实体。 - **延迟加载**: JPA的懒加载机制使得关联的对象只有在真正需要时才从数据库加载,提高性能。 **3. Hibernate JPA ...

    AJAX学习总结(六)---可收缩展开的级联菜单和局部刷新

    在本篇“AJAX学习总结(六)---可收缩展开的级联菜单和局部刷新”中,我们将深入探讨如何利用AJAX技术实现交互性更强的Web应用,特别是针对级联菜单和页面局部刷新这两个功能。AJAX(Asynchronous JavaScript and ...

Global site tag (gtag.js) - Google Analytics