一对多,一端设置:

  <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. 2016.3.23 集成新版activiti-modeler(5.17+)到项目中

    书:<activiti实战> 博客: http://www.kafeitu.me/activiti/2013/03/10/integrate-activiti-modeler.html h ...

  2. &lt;LeetCode OJ&gt; 83. Remove Duplicates from Sorted List

    83. Remove Duplicates from Sorted List Total Accepted: 94387 Total Submissions: 264227 Difficulty: E ...

  3. HDU 1017 A Mathematical Curiosity (枚举水题)

    Problem Description Given two integers n and m, count the number of pairs of integers (a,b) such tha ...

  4. Oracle 修改带数据的字段类型

    http://www.cnblogs.com/LDaqiang/articles/1157998.html由于需求变动,现要将一个类型NUMBER(8,2)的字段类型改为 char.大体思路如下:   ...

  5. 中兴应用之星携手天翼开放平台:让APP开发更简单

    日前,业内率先的APP开发平台运营商中兴应用之星与中国电信天翼开放平台达成战略合作.即广大用户通过天翼开放平台,可直接享受到应用之星提供的"APP开发服务".   应用之星.中兴通 ...

  6. iReport+jasperreport创建子表的几种方式(1)

    在制作报表的过程中,子表是不可缺少的.今天就研究了一下制作子表的几种方式 一.连接数据库创建子表 以MySQL为例: 我的数据源数据库中的表 watermark/2/text/aHR0cDovL2Js ...

  7. MVC项目总结

    View命名 View下有多个模块的文件夹,我们根据微软的规定,每个模块下的首页都为Index.cshtml命名 获得当前页面的控制器名称 var currentControllerName = th ...

  8. J2EE——开发环境搭建

    WEB环境搭建 1.J2EE开发环境搭建(1)——安装JDK.Tomcat.Eclipse 2.JAVA运行环境和J2EE运行环境的搭建 3.jsp开发所需要的eclipse插件(lomboz.tom ...

  9. JQuery如何获取按键的unicode编码?

    $("selector").keyup(function(xxx){ var myEvent = xxx; var code = myEvent.keyCode; alert(co ...

  10. Socket的UDP协议在erlang中的实现

    现在我们看看UDP协议(User Datagram Protocol,用户数据报协议).使用UDP,互联网上的机器之间可以互相发送小段的数据,叫做数据报.UDP数据报是不可靠的,这意味着如果客户端发送 ...