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用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...
随机推荐
- 富文本 Htmll类 html标签
HTML类可解析的标签 在手机上显示从网络端获取的数据有两种方式,一种是WebView,另一种是TextView,WebView大家都知道,功能强大但不灵活,下面主要说下TextView. 通过查看a ...
- sql 删除多项
delete from 表名 where 字段 in(值,值,值.......)
- canvas 下载
function saveFile(data, filename){ var save_link = document.createElementNS('http://www.w3.org/1999/ ...
- java使用内部类的好处及其初始化
java使用内部类的原因 每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响 java内部类初始化 ForeCatal ...
- CSS3中的transform变形
在CSS3中,用Transform功能可以实现文字或图像的旋转.缩放.倾斜.移动这四种类型的变形,这四种变形分别使用rotate.scale.skew和translate这四种方法来实现.将这四种变形 ...
- js设置元素的onclick传参方法
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- strcmp和==比较
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/cpp_strcmp.html #include <stdio.h> # ...
- 你好,C++(21)只要天还没黑,就一直在工地干活-4.3.1 while循环:只要…就一直…
4.3 循环控制语句 在现实世界中,有这样一类现象: 只要油箱中的当前油量小于油箱容量100升,就一直往油箱中加油: 一直不断地为祖国辛勤工作,只要我还活着: 公司100000位员工,每个人的工资都 ...
- uva 755 - 487--3279
#include <iostream> #include <string> #include <map> #include <algorithm> #i ...
- telnet简单操作 模拟请求
telnet简单操作 模拟请求 一: 二: 三: 按照以上操作即可!