一对多,一端设置:

  <set name="TWorkorderHistories" inverse="true" cascade="all">

一)保存级联

  问题:

    一方主键数据库中没有,先保存多方时,回报引用暂时态对象错误,

  分析:

    先不关联多方地保存一方,

  解决:

    假设一方A,多方B

    1)B.setA(A);

    2)A.getSetB().add(B);

    3)session.save(A);

  或:

 // 插入记录
session.saveOrUpdate(workorder);
tr.commit();
session.close(); session = hibernateDao.getHSession();
tr = session.beginTransaction();
// 添加工单历史
TWorkorderHistory tWorkorderHistory = new TWorkorderHistory(workorder,
pureUser, 1L, new Timestamp(new Date().getTime()), Short
.parseShort("0")); session.saveOrUpdate(tWorkorderHistory);
workorder.getTWorkorderHistories().add(tWorkorderHistory); // 插入记录
tr.commit();
session.close();

保存级联

二)修改级联

  问题一:

  org.hibernate.HibernateException: illegally attempted to associate a proxy with two open Sessions

  解决:

    参考:http://blog.163.com/chinagujing@yeah/blog/static/170937439201092405558777/

       http://littie1987.iteye.com/blog/1039082

 @Override
public void update(TWorkorderInfo workorder,User pureUser, String note, Short status)
throws DataAccessException { workorder.setStatus(status);
workorder.setUpdated(new Timestamp(new Date().getTime())); //开启事务
Session session = hibernateDao.getHSession();
Transaction tr = session.beginTransaction(); TWorkorderHistory tWorkorderHistory = new TWorkorderHistory();
tWorkorderHistory.setTWorkorderInfo(workorder);
tWorkorderHistory.setCreated(new Timestamp(new Date().getTime()));
tWorkorderHistory.setOptType(status);
tWorkorderHistory.setNote(note);
tWorkorderHistory.setPureUser(pureUser);
tWorkorderHistory.setWorkflowId(1L); session.saveOrUpdate(tWorkorderHistory);
workorder.getTWorkorderHistories().add(tWorkorderHistory); session.merge(workorder);
tr.commit();
session.close();
}

更新级联

  问题二:

  org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.bonc.pure.domain.User

  分析:

    前台忘记传这个User了,一共有两个这样的User对象,后台只set了一个,前台传的是workorder.pureUserByModifier.userName,

    struts给new的这个User对象只有userName一个属性,没有userId,而主键关联是需要通过userId的

  解决:

    <s:hidden name="workorder.pureUserByModifier.userId"></s:hidden>

二) 删除级联

  问题:

  org.hibernate.HibernateException: illegally attempted to associate a proxy with two open Sessions

  解决:    

    参考:http://www.itzhai.com/hibernate-one-to-many-association-mapping-configuration-and-the-cascade-delete-problem.html

 Session session = hibernateDao.getHSession();
session.beginTransaction();
TWorkorderInfo workorder = (TWorkorderInfo) session.load(clazz, workorderCode);
session.delete(workorder);
session.beginTransaction().commit();

删除级联

hibernate 一对多 级联 保存修改 删除的更多相关文章

  1. Hibernate入门(八)级联保存或更新(含问题在末尾,求大佬指点..)

    级联保存或更新CASCADE 级联保存或更新: 作用就是:保存一方的数据的时候,会把关联的对象也同时保存. 级联保存或更新的配置: 属性名:cascade 属性值: 1.none:所有情况下均不进行关 ...

  2. Hibernate一对多关联关系保存时的探究

    在以前使用hibernate时,经常对保存存在关联关系的对象时,不确定是否能保存成功.    因此,特意对一对多关系的2个对象进行实践. 一.pojo类和配置文件的准备         这里有一点提前 ...

  3. spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)

    spring boot 使用jpa在pom.xml在上文中已经介绍过.在这里直接介绍各个类文件如何编写: 代码结构: domain(存放实体类文件): repository(存放数据库操作文件,相当于 ...

  4. springmvc4+hibernate4+spring4注解一对多级联保存

    package com.h3c.zgc.user.entity; import java.util.HashSet; import java.util.Set; import javax.persis ...

  5. (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)

    一.先上知识点: 1.hibernate多对多关联关系中最重要的参数是(基于配置文件xxx.hbm.xml文件形式): 1):inverse属性,如果设置inverse=“true”就代表让对方参与维 ...

  6. Hibernate一对多操作

    --------------------siwuxie095 Hibernate 一对多操作 以客户和联系人为例,客户是一,联系人是多 即 一个客户里面有多个联系人,一个联系人只能属于一个客户 注意: ...

  7. Hibernate 一对多

    表与表之间关系回顾(重点) 1 一对多 (1)分类和商品关系,一个分类里面有多个商品,一个商品只能属于一个分类 (2)客户和联系人是一对多关系 - 客户:与公司有业务往来,百度.新浪.360 - 联系 ...

  8. Hibernate中表与表之间的关联一对多,级联保存和级联删除

    1:Hibernate的一对多操作(重点) 一对多映射配置 第一步:创建两个实体类:客户和联系人(例)以客户为一,联系人为多: package com.yinfu.entity; public cla ...

  9. 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN

    声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibern ...

随机推荐

  1. ElasticSearch和Hive做整合

    1.上传elasticsearh-hadoop的jar包到server1-hadoop-namenode-01上 在server1-hadoop-namenode-01上执行: cp  /home/d ...

  2. blind xxe攻击

    最近做啊里的题的时候遇到了 http://hivesec.net/web-security/%E5%85%B3%E4%BA%8Eblind-xxe.html

  3. html5,audio音乐播放器

    最终,做了自己原来一直想要实现的事儿.得出的结果是,有些事儿一旦開始做了,那么它就并非非常难. 如今的我,正听着自己的播放器放出的<光辉岁月>写这篇周六清晨的博文.写的不是非常好.但也请各 ...

  4. 如何在VS2010中添加ActiveX控件及使用方法

    方法1: 1.首先在在项目上面右击添加类,如下图所示: 2.点击添加ActiveX控件中的MFC类 3.找到需要添加的ActiveX类. 4.点击完成即可. 5.此时转到资源视图,打开如下视图.可能工 ...

  5. 【解决方法】INF file txtsetup.sif is corrupt or missing /// 使用WinSetupFromUSB来U盘安装windows2003(不使用win PE系统)

    [解决方法]INF file txtsetup.sif is corrupt or missing http://blog.csdn.net/zhyl8157121/article/details/8 ...

  6. 单点登录系统cas资料汇总

    http://jasig.github.io/cas/4.0.x/index.html           主页 https://jasigcas.herokuapp.com              ...

  7. CentOS开启FTP及配置用户

    vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  8. MySQL 优化、设计规则浅谈

    当数据量大,数据库相应慢时都会针对数据库进行优化.这时都是要针对具体情况,具体业务需求进行优化的. 但是有些步骤和规则应该适合各种情况的.这里综合网上找的资料简单分析一下. 第一优化你的sql和索引: ...

  9. Redis(六):java里常用的redis客户端(Jedis和Redisson)

    Redis的各种语言客户端列表,请参见Redis Client.其中Java客户端在github上start最高的是Jedis和Redisson.Jedis提供了完整Redis命令,而Redisson ...

  10. linux下性能监控工具

    一.  Linux 性能监控的概述 系统由若干子系统构成,通常改动一个子系统有可能影响到另外一个子系统.甚至会导致整个系统不稳定.崩溃. 所以说优化.监測.測试一般是连在一起的,并且是一个循环并且长期 ...