博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate学习(三)一对多数据的保存
阅读量:6237 次
发布时间:2019-06-22

本文共 1317 字,大约阅读时间需要 4 分钟。

保存习惯代码

1     @Test 2     public void saveTwoTableTest(){ 3         Transaction transaction = null; 4         try { 5             transaction = session.beginTransaction();//创建session 6             Customer customer=new Customer(); 7             customer.setCustomerName("123"); 8             //在Customer中设置了一对多关系 9             Order order=new Order();10             order.setOrderNumber("100");11             customer.getOrders().add(order);12             session.save(customer);//保存操作13             transaction.commit();//提交事务14         } catch (HibernateException e) {15             if (transaction!=null) {16                 transaction.rollback();//事务回滚17             }18             e.printStackTrace();19         }finally{20             if (session!=null&&session.isOpen()) {21                 session.close();//关闭session22             }23         }24     }

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

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:删除和当前对象解除关系的附属对象。

转载地址:http://umzia.baihongyu.com/

你可能感兴趣的文章
XML 基本语法
查看>>
CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件...
查看>>
【第一天】iOS开发环境搭建
查看>>
daterangepicker日历插件使用参数注意问题
查看>>
EVA资料
查看>>
c# Unity依赖注入WebService
查看>>
range()和xrange()的区别
查看>>
基础数据类型
查看>>
站立会议第五天
查看>>
[ACM]hdu Herding(枚举+三角形面积)
查看>>
SQL各种获取时间的方式
查看>>
linux-Centos7安装python3并与python2共存
查看>>
畅通工程(并查集)
查看>>
练习一 第二题
查看>>
Sky Code
查看>>
滑动时候警告:Unable to preventDefault inside passive event listener
查看>>
[zz]intel sysret漏洞
查看>>
先装VS2005再装IIS,出现访问IIS元数据库失败解决方案
查看>>
docker往阿里云推镜像和打包镜像
查看>>
最新民政部行政区划代码,省市区三级
查看>>