保存习惯代码

     @Test
public void saveTwoTableTest(){
Transaction transaction = null;
try {
transaction = session.beginTransaction();//创建session
Customer customer=new Customer();
customer.setCustomerName("123");
//在Customer中设置了一对多关系
Order order=new Order();
order.setOrderNumber("100");
customer.getOrders().add(order);
session.save(customer);//保存操作
transaction.commit();//提交事务
} catch (HibernateException e) {
if (transaction!=null) {
transaction.rollback();//事务回滚
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();//关闭session
}
}
}

在这个保存中需要注意的事项:

1.如果按照这个保存的步骤的话:
需要在

<set name="orders" cascade="all-delete-orphan">

在set集合中加上级联操作

不然会出现如下报错:

object references an unsaved transient instance - save the transient instance before flushing: cn.lonecloud.domain.Order

下面是级联属性的属性值:

Cascade 属性值:

none:在保存、删除修改对象的时候,不考虑其附属物的操作

save-update:在保存、更新当前对象时,级联保存、更新附属物。

delete:在删除当前对象时,级联删除附属物。

all: 包含save-update和delete的操作 当在一对多关系的时候remove一个对象的时候,那么他将会更新附属物的属性,并不会删除附属物

delete-orphan:删除和当前对象解除关系的附属对象。

Hibernate学习(三)一对多数据的保存的更多相关文章

  1. hibernate学习三(使用Annotation,注解)

    一.新建一个工程hibernate_02_HelloWorld_Annotation(复制01工程并重命名); 二.新建一个实体类teacher.java,数据库中新建teacher表; import ...

  2. hibernate学习(三) hibernate中的对象状态

    hibernate对象的状态分为三种:  游离状态,持久化状态,瞬时状态 下面一行代码区分: Configuration   cfg=new Configuration().configure(); ...

  3. Hibernate学习三----------session详解

    © 版权声明:本文为博主原创文章,转载请注明出处 如何获取session对象 1. openSession 2. getCurrentSession - 如果使用getCurrentSession需要 ...

  4. Hibernate学习(三)自动建表

    一般情况下有如下两种方法: 1.在配置文件中添加如下配置 <property name="hibernate.hbm2ddl.auto">create</prop ...

  5. hibernate学习三 精解Hibernate之核心文件

    一 hibernate.cfg.xml详解 1 JDBC连接: 2 配置C3P0连接池: 3 配置JNDI数据源: 4 可选的配置属性: 5 hibernate二级缓存属性 6 hibernate事务 ...

  6. Hibernate学习2--对象的三种状态以及映射关系的简单配置

    上篇hibernate的博客总体简单梳理了对象持久化的一些思想以及hibernate中对象持久化化的方法,下面说说对象持久化过程的三种状态. 一.hibernate缓存的概念 1.session与缓存 ...

  7. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  8. Hibernate 学习教程

    第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个演示样例HibernateHelloWorld 7 第7 ...

  9. Hibernate学习大全

    第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHelloWorld 7 第7课 ...

随机推荐

  1. 远程服务调用(RMI)

    模块概念的引入,是本框架的一大优势,而跨JVM的远程服务调用则是另一个最有价值的功能. <本地服务调用>一文中我们讲解了跨模块间的服务调用可以是这样的: ServiceHelper.inv ...

  2. curl错误码说明

    1.得到错误码 $errno=curl_errno($ch); if($errno!=0){ -- } 2.错误码说明 <?php return [ '1'=>'CURLE_UNSUPPO ...

  3. Unity DoTween 动画使用案例

    这边我就直接放一个标准的Dotween动画的使用demo吧. 这个案例满足应该可以完成你所想实现的几乎所有复杂动画. void PlayTween() { //set tween data float ...

  4. 【转】awk 数组用法【精华贴】

    文本处理的工作中,awk的数组是必不可少的工具,在这里,同样以总结经验和教训的方式和大家分享下我的一些学习心得,如有错误的地方,请大家指正和补充. awk的数组,一种关联数组(Associative ...

  5. 高通ASOC中的machine驱动

    ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...

  6. TensorflowTutorial_二维数据构造简单CNN

    使用二维数据构造简单卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 图像和一些时序数据集都可以用二维数据的形式表现,我们此次使用随机分布的二位数据构造一个简单的CNN-网络卷积- ...

  7. 【原创】Struts2.5.12版本中使用通配符*

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. <package name="hellodemo" extends="struts-default&quo ...

  8. canvas将图片转为base64

    最简例子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta ...

  9. iOS-主线程刷新UI【+单例】

    主线程刷新UI dispatch_async(dispatch_get_main_queue(), ^{ /// }); 单例 static Tools *_sharedManger; @implem ...

  10. ABP 多租户 对应多数据库 租户启动报错

    什么是多租户? “软件多租户是指一个软件体系结构,其中一个软件实例在一个服务器上运行,并为多个租户提供服务*租户是一组共享具有软件实例特定权限的公共访问权限的用户. 架构中,软件应用程序旨在为每个租户 ...