下面是一个例子:

Employee ---- Address  (假设为单向one-to-many)class Employee {    @oneToMany(cascade = CascadeType.REMOVE, orphanRemoval = true)    @JoinTable(JoinColumn="Employee_id")    private Set<Address> addresses;    // [当Employee和Address均处于关联时]这种场合设置cascade和orphanRemoval是一样的效果,只要设置一种就好

    // [当Employee和Address均不处于关联时,比如设置address中某条数据为空, 仅设置Cascade=Remove时,当操作到Employee只会将其对应的Address删掉    // 设置orphanRemoval=true时,会将FK上Null对应的数据都会删掉(自动去孤子)

}注意加入的位置只能在one的一方设置orphanRemovalcascade所有关系都可设置

oneToMany 使用:

示例:Employee与Phone为例.

1、类定义如下:

package com.vrvwh.wh01.domain;import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;/*** Created by Administrator on 2015/3/5.*/
@Entity
public class Employee {private long id;private String name;private Set<Phone> phones=new HashSet<Phone>();@Id@GeneratedValue(strategy = GenerationType.IDENTITY)public long getId() {return id;}public void setId(long id) {this.id = id;}@Columnpublic String getName() {return name;}public void setName(String name) {this.name = name;}
  /**orphanRemoval=true配置表明删除无关联的数据。级联更新子结果集时此配置最关键  */@OneToMany(mappedBy = "employee",cascade = CascadeType.ALL,orphanRemoval = true)public Set<Phone> getPhones() {return phones;}public void setPhones(Set<Phone> phones) {this.phones = phones;}
}
package com.vrvwh.wh01.domain;import javax.persistence.*;/*** Created by Administrator on 2015/3/5.*/
@Entity(name="Phones")
public class Phone {@Idprivate int phoneId;private int phoneNumber;@ManyToOne(cascade= CascadeType.ALL)private Employee employee;public int getPhoneId() {return phoneId;}public void setPhoneId(int phoneId) {this.phoneId = phoneId;}public int getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(int phoneNumber) {this.phoneNumber = phoneNumber;}public Employee getEmployee() {return employee;}public void setEmployee(Employee employee) {this.employee = employee;}}

2、更新:

Employee employee=employeeService.query(1);employee.getPhones().clear();Phone phone1=new Phone();phone1.setPhoneNumber(132567);employee.getPhones().add(phone1);Phone phone2=new Phone();phone2.setPhoneNumber(132567);employee.getPhones().add(phone2);employeeService.update(employee);

JPA OneToMany级联更新 及 orphanRemoval = true 说明相关推荐

  1. Spring Data JPA OneToMany级联,多方删除修改新增详解(好文章!!申精!!)

    前言 近期的项目中使用Spring Data JPA.JPA带来很大的便捷,但它内部映射关系及持久化机制如果理解不到位会出现很多问题.不同的配置将会产生不同的执行过程.如果不了解其运行机制,很容易在一 ...

  2. Spring Data JPA OneToMany注解参数orphanRemoval,一对多删除详解

    博主:爱码叔 个人博客站点: icodebook 公众号:漫话软件设计 专注于软件设计与架构.技术管理.擅长用通俗易懂的语言讲解技术.对技术管理工作有自己的一定见解.文章会第一时间首发在个站上,欢迎大 ...

  3. JPA: Spring Data JPA @OneToMany 注解参数 orphanRemoval,一对多删除详解

    分析了OneToMany级联操作多方的插入.更新.删除.我们得到如下结论: 1.插入,建议一方设置mappedBy,好处是只会执行一条insert语句.不会执行多余的update外键的sql. 2.更 ...

  4. jpa orphanRemoval = true的作用

    这个注解表示是否删除孤立元素,例如映射关系是一对一,或一对多. 加上这个注解,即使不设置级联关系,删除一的时候,多的一方肯定是孤立元素了. 如代码: @OneToOne(mappedBy = &quo ...

  5. 关于hibernate注解方法中一对多的级联更新

    最近做的项目中遇到很多各种表间关系是一对多对应的问题,开始自己弄的时候就去网上查,结果发现网上有关这方面的东西给的不是自己想要的,于是经过几天不停的更改测试终于算是勉强完成了级联更新的问题.在此把它记 ...

  6. JPA oneToMany

    一对多模型(单向) 说明: 一个客户对应多个地址,通过客户可以获得该客户的多个地址的信息.客户和地址是一对多的关系,并且客户与地址是单向关联的关系. 映射策略 外键关联:两个表的关系定义在一个表中: ...

  7. JPA OneToMany删除子项须知

    OneToMany,在One的Many集合里面移除某项时,DB不会删除对应项 例如:user -> orderList,在orderList中移除一项order时,DB层面不会删除对应order ...

  8. Access外键 级联更新、删除

    工具栏-->"关系". 打开主表和从表. 将主表的字段拖动到从表的对应字段. (两个字段要求类型相同. 如果主表是自动编号,那么从表用长整型.) Access添加外键约束 ( ...

  9. Spring Data JPA 禁止自动更新

    公司的项目后台架构是SpringBoot + Spring Date JPA,采用MySQL数据库.在工作刚开始时就遇到了一个奇怪的现象.在采用Date JPA查询完数据库之后,若改变了查询出的对象属 ...

最新文章

  1. VTK:图表之VisualizeDirectedGraph
  2. 充电原理_电动汽车充电桩如何设置?充电桩原理介绍
  3. java上下文即ServletContext
  4. 第三十六期:人工智能统计调查:86%的消费者更喜欢人工客服
  5. hadoop fs 命令详解
  6. php界面框架luy_LazyPHP
  7. 程序员的梗_程序员都背着大书包,里面到底装的什么?程序员们:钱、电脑.....
  8. 去除img未加载到的默认边框问题
  9. JSONHelper JSON帮助类
  10. discoverer初始化环境
  11. php 判断来源 微信客户端_常见WebShell客户端的流量特征及检测思路
  12. android界面编程内部类,Android精讲--界面编程1(界面编程与视图的组件)
  13. php链接mysql数据库 p_php连接mysql数据库的几种方法
  14. 【好用的Mac分屏软件】Magnet for Mac 2.3
  15. Folx Pro苹果BT磁力多线程下载工具
  16. Linux下libaio的一个简单例子
  17. mhw跳过结尾_怪物猎人世界怎么跳过剧情
  18. 抖音聊天”上线,字节最后的社交梦?
  19. Linux公社 学习连接
  20. Bootrap 项目实战(微金所前端首页)第一部分

热门文章

  1. 【NOJ1571】【算法实验三】【分支限界法】八数码
  2. 运筹与决策(三)求解线性规划、运输问题和0-1整数规划问题
  3. 什么品种的猫最受欢迎?Python爬取猫咪网站交易数据
  4. python获取期货实时行情_量化投资者是如何获取实时行情数据的呢?
  5. 五分钟带你速通Spring IOC
  6. Gym - 102219J Kitchen Plates(暴力或拓扑序列)
  7. 一个人最重要的投资就是投资自己
  8. 新拟物风设计风格(浮雕效果)——CSS
  9. CCD相机出现 亮线或紫色线 解释。
  10. CentOS7 升级到 CentOS8