hibernate 一对多操作(级联操作)
一对多级联操作
1. 级联保存
复杂写法
Company company = new Company();
company.setcName("Hello");
company.setcAdress("World");
Staff staff = new Staff();
staff.setsName("hi");
staff.setsAge(0);
company.getSetStaff().add(staff);
staff.setCompany(company);
session.save(company);
session.save(staff);
一般写法
配置Company.hbm.xml,在set标签加入cascade="save-update" 表示级联保存
Company company = new Company();
company.setcName("Hello");
company.setcAdress("World");
Staff staff = new Staff();
staff.setsName("hi");
staff.setsAge(0);
company.getSetStaff().add(staff);
session.save(company);
保存前
公司表
员工表
保存后
公司表
员工表
公司,员工信息都保存成功,并且外键也对应成立
2. 级联删除
配置Company.hbm.xml,在set标签加入cascade="delete" 表示级联删除。
先获取company对象,在调用session的delete方法删除company.
Company company = new Company();
company = session.get(Company.class, 1);
session.delete(company);
删除前
公司表
员工表
删除后
公司表
员工表
即公司信息删除后,与删除的公司有关员工也会被删除。实现了级联删除效果。
当未设置Company映射配置文件时,即未在set标签加入cascade="delete"
删除前
公司表
员工表
删除后
公司表
员工表
即与删除公司有关的员工不会被删除而是将对应员工的外键设置为null
3.一对多修改操作
将id为4的员工公司改为id为为5的公司
公司表
员工表
操作:
Company company = new Company();
company = session.get(Company.class, 5);
Staff staff = new Staff();
staff = session.get(Staff.class, 4);
company.getSetStaff().add(staff);
staff.setCompany(company);
操作后
员工的公司外键改为5,成功。
hibernate 一对多操作(级联操作)的更多相关文章
- Hibernate 一对多配置 级联操作(级联失败问题分析解决)
一方: package com.xdfstar.domain; import java.io.Serializable;import java.util.Date;import java.util.H ...
- Java三大框架之——Hibernate关联映射与级联操作
什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...
- hibernate 注释多表 级联操作
一对多模型(单向) 说明: 一个客户对应多个地址,通过客户可以获得该客户的多个地址的信息.客户和地址是一对多的关系,并且客户与地址是单向关联的关系. 映射策略 # 外键关联:两个表的关系定义在一个表中 ...
- hibernate 一对多(级联关系)
hibernate 核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiber ...
- 六 Hibernate多表操作&级联&外键维护
Hibernate的一对多关联映射 Hibernate的多对多关联映射 数据库表与表之间的关系:一对多,多对多,一对一 一对多:一个部门对应多个员工,一个员工只能属于一个部门.一个客户对应多个联系人, ...
- 【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作
这里要说的是Hibernate的关联关系的级联操作,使用cascade属性控制. 依旧用部门和员工举例.多个员工相应一个部门(多对一关联关系) 员工类:Employee.java package cn ...
- Hibernate框架笔记03表操作多对多配置
目录 1. 数据库表与表之间的关系 1.1 一对多关系 1.2 多对多关系 1.3 一对一关系[了解] 2. Hibernate的一对多关联映射 2.1 创建一个项目,引入相关jar包 2.2. 创建 ...
- Hibernate 一对多
表与表之间关系回顾(重点) 1 一对多 (1)分类和商品关系,一个分类里面有多个商品,一个商品只能属于一个分类 (2)客户和联系人是一对多关系 - 客户:与公司有业务往来,百度.新浪.360 - 联系 ...
- [原创]关于Hibernate中的级联操作以及懒加载
Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...
随机推荐
- 关于lower_bound()的用法--NYOJ 201作业题
lower_bound它有三个参数, 第一个和第二个是给定区间起点和终点的指针,第三个参数是要查找的数,它的作用原理是在给定的区间中进行二分查找,这个二分区间是前开后闭的,他返回第一个大于等于它的函数 ...
- 作为iOS开发者不得不follow的52人
对于每位iOS开发者来说,Twitter是个获得最新iOS开发技术和相关信息的好地方.如果你刚好有Twitter账户,可以关注以下为你推荐的该领域内的52个优秀人物. 1.Tim Cook 这位无需多 ...
- H1标签使用的七大注意事项
H1标签使用的七大注意事项: 1 每个页面都应该有H1标签,H1标签是每个网页不可缺少的要素. 2 使用H1标签的内容应该简洁明了; 3 H1标签要尽量出现在源文件代码的开头的部分,这样可以让访问者和 ...
- linux的df命令
man df可以查看磁盘的使用情况以及文件系统被挂载的位置 df -lh命令效果如下
- 利用eclipse开发php<转>
1.安装php环境 Eclipse支持PHP自动提示 其实如果你已经安装好了php环境(安装过程见)的话,只需要下面2步就可以了.hoho,很简单的. 1,下载eclipse中php的插件phpecl ...
- 执行oracle函数的四种方法
1.在定义函数时:如果有参数,则参数可有类型但是不加长度. 2.在执行函数: var/variable var_name var_type(如果数据类型是number则没有长度,如果数据类型是varc ...
- zookeeper主要使用场景
场景一:有一组服务器向客户端提供某种服务,我们希望客户端每次请求服务端都可以找到服务端集群中某一台服务器,这样服务端就可以向客户端提供客户端所需的服务.对于这种场景,我们的程序中一定有一份这组服务器的 ...
- 侧滑RESideMenu的使用
MainTabBarViewController *mainCtrl = [[MainTabBarViewController alloc] init]; LeftViewController *le ...
- 一些SQL语句的问题
1.getdate()函数问题 go create table table_1( id int primary key identity, name ) not null, daytime datet ...
- JDBC数据源连接池的配置和使用实例
个人学习参考所用,勿喷! 使用JDBC建立数据库连接的两种方式: 1.在代码中使用DriverManager获得数据库连接.这种方式效率低,并且其性能.可靠性和稳定性随着用户访问量得增加逐渐下降. 2 ...