一对多,一端设置:

  <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. redis参数配置

    redis.conf配置文件 配置项 值 说明 slave-read-only yes slave是否只读 slave-serve-stale-data yes 当slave与master断开连接,s ...

  2. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第15章节--开发SP2013工作流应用程序

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第15章节--开发SP2013工作流应用程序         本章节你将学到: SP中工作流的新功能: 理解工作流管理服务 ...

  3. odoo图片显示

        如果在odoo客户端展示图片, 可以用 url( data:image/png;base64, 图片base64编码过的内容) 展示, 例如     url(data:image/png;ba ...

  4. TCP/IP详解 卷一(第三章 IP:网际协议)

    IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 1.不可靠:就是它不能保证IP数据报能成功地到 ...

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

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

  6. 显存不够----ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[4096]

    ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[4096] 类似问题 h ...

  7. SQL Prompt 编辑

    SQL Prompt是一款拥有SQL智能提示功能的SQL Server和VS插件.超级好用的插件,

  8. mybatis的两种分页方式:RowBounds和PageHelper

    原理:拦截器. 使用方法: RowBounds:在mapper.java中的方法中传入RowBounds对象. RowBounds rowBounds = new RowBounds(offset, ...

  9. YARN/MRv2 中基本术语介绍

    YARN/MRv2是下一代MapReduce框架(见Hadoop-0.23.0),该框架完全不同于当前的MapReduce框架,它在扩展性,容错性和通用性等方面更出色,据统计,Yarn有超过15000 ...

  10. NorFlash linux分区分析

    一般情况下,与板卡相关的内容都在bsp中(即arch/arm/mach-xxx/board-xxx.c)中,但norflash的分区直接放在norflash驱动中.由于norflash应用基于mtd, ...