hibernate级联删除操作失败

问题描述

对hibernate刚入手,不得其精华配置文件如下主表<class name="PrototypeOversea" table="T_MT_PROTOTYPEOVERSEA"><id name="sid" type="java.lang.Integer"><column name="SID" precision="10" scale="0" /><generator class="sequence"><param name="sequence">SEQ_MT_PROTOOVERSEA</param></generator></id><set name="items" cascade="all" inverse="true" lazy="false" order-by="ITEMID"><key><column name="PROTOTYPEOVERSEAID" /><!-- 子表的外键 --></key><one-to-many class="PrototypeOverseaItem" /><!-- 子表的关联class --></set></class>子表<class name="PrototypeOverseaItem" table="T_MT_PROTOTYPEOVERSEAITEM"><id name="itemId" type="java.lang.Integer"><column name="ITEMID" precision="10" scale="0" /><generator class="sequence"><param name="sequence">SEQ_MT_PROTOOVERSEA_ITEM</param></generator></id><!-- class 指定主表关联的class --><many-to-one name="pos" class="PrototypeOversea" fetch="select" not-null="true"><column name="PROTOTYPEOVERSEAID" precision="10" scale="0"></column><!-- column为字表里和主表关联的外键 --></many-to-one></class>现在的问题是,当主表的set集合items减少时,子表不会自动删除set里没有的记录目前,主表的set集合items增加时,子表会自动添加set添加的记录。 问题补充:lt0604 写道

解决方案

你说的这种删除我觉得,应该在主表中检索出所有的子表对象,再remove掉后save不知道你是怎么操作的,以前还真没试过这种处理方式,item集合既要判断新增,修改,还要判断删除。====>我已经的处理方式都是将子对象直接删除。
解决方案二:
把你的代码贴出来看看。
解决方案三:
级联删除是在删除主表的同时删除子表!
解决方案四:
inverse="true"这个是由对方维持关系,需要删除子表记录,需要再set集合中remove的同时,将remove掉的对象逐一解除与主表的关联。PrototypeOverseaItem.setPrototypeOversea(null);
解决方案五:
http://blog.csdn.net/daniel_tu/archive/2009/02/24/3932078.aspx

时间: 2025-01-20 12:20:17

hibernate级联删除操作失败的相关文章

SSH 中 用了atomikos集成JTA 事务后,hibernate执行任何操作失败后都不抛异常

问题描述 在项目中, 用了atomikos集成JTA 事务后,hibernate执行任何操作失败后都不抛异常比如,我用getHibernateTemplate().load方法加载一个不存在的数据都不抛出异常,或者我删除一个不存在的记录也不抛异常,谁知道这是什么原因啊?????????? 问题补充:lizhi92574 写道 解决方案 load查询返回代理对象,在你使用的时候才会抛出异常

hibernate 级联删除问题

问题描述 小女子大问题====hibernate级联删除问题====现有相册(Album)和照片2个表(Photo)我想在删除相册的同时删除相册里所有的照片两个表的实体和映射如下publicclassAlbumimplementsSerializable{privateintid;privateStringname;//名称privateStringdescription;//描述privateStringpwd;//密码privateAlbumStatealbumState;//状态多对一单向

hibernate 级联删除

问题描述 struts+spring+hibernate级联删除 解决方案 解决方案二:这个是级联删除的<classname="Address">从表</class><classname="Person"casecade="all">主表</class>解决方案三:<classname="Xxxx"/><!--从表--><classname=&quo

hibernate级联删除时无法删除,一对多双向关联,一是Consult 多是TbFiles

问题描述 hibernate级联删除时无法删除,一对多双向关联,一是Consult 多是TbFiles 一的配置: 多的配置: class="com.project.dto.Consult" fetch="select" cascade="all"> 执行代码: public void delConsult(String[] ids){ HibernateTemplate hTemplate=this.getHibernateTemplat

JPA和hibernate对删除操作的不同

在hibernate里面调用session的delete方法以后,无论这个被删除的对象有 没有被人外键引用到,都可以被删除,并且此时的外键设为null,也就是说他会 自动帮我们去查看他被谁引用到了.然后把引用全部去掉后,再把自己删掉.而 在JPA里面,如果调用EntityManager.remove方法时,传进去的对象,有被外键 引用到,则会失败.因为JPA里面的实现就是直接执行delete语句,也不管他有 没有被外键引用,此时,当然会出错了. 测试时候使用的两个类分别如下: 举的例子是部门和员

ERP基础档案管理模块中实现多级分类档案级联删除技术

erp ERP基础档案管理模块中实现多级分类档案级联删除技术   本存储过程实现了多级分类档案级联删除技术 本存储过程的特点是: n          可以在不同的数据库表上应用此存储过程,以达到通用化 n          同时用户也可以根据不同的表结构,选择相应版本的的存储过程,在这里共有三个版本可供用户选择,分别对应表结构中有无节点的深度字段等情况 进行调用本存储过程时只需要传递节点号及表名即可,但是用户选择相应版本进行应用时,需要针对实际情况作出选择 版本一 CREATE procedu

Oracle数据库中的级联查询、级联删除、级联更新操作教程_oracle

级联查询在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点ID的表 start with selfid=id //给定一个startid(字段名为子接点ID,及开始的ID号) connect by prior selfid=parentid //联接条件为子接点等于父接点,不能反 这个SQL主要用于菜单的级联查询,给一个父接点可以查出所有的子接点.及子接点的子接点,一查到底,很实用.不过呢这个程序只能在orac

hibernate级联,删除一方不删除多方,只是把多方的外键置空,请问怎样设置

问题描述 hibernate级联,删除一方不删除多方,只是把多方的外键置空,请问怎样设置问题补充:也就是说这个问题在级联关系中没有对应,需要在删除一方前手动清空多方的外键对应么 解决方案 对头,就是这个意思的解决方案二:可以通过hibernate的回调,用sql语句直接删除来解决你的问题关于回调可以参考这个http://aidiyuxin.iteye.com/blog/224850

hibernate 多对多 级联删除 注解

问题描述 有两个类:Survey和Questions,问卷类和题目类,它们是多对多的关系,即:一张试卷可以有多个题目,一个题目可以属于多个试卷,我用两个一对多,数据库用中间表来实现,并有第三个类SurveyQuestions. surveuy类如下: //问卷实体:包括各种属性@Entity@Table(name="_survey")public class Survey {private int id;// 问卷IDprivate String name;// 问卷标题private