• JPA oneToMany 级联更新


     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;
        }
    
        @Column
        public 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 {
        @Id
        private 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);
  • 相关阅读:
    debian 安装deb软件
    Linux的发行版之间的联系和区别
    Linux软件包安装(rpm、yum、apt-get)
    在deepin中安装docker
    使用BeanUitls提高对象拷贝效率
    Nginx下载和安装与启动
    Spring Boot 的项目打包成的 JAR 包,制作成 docker 镜像并运行
    Java并发编程实战(使用synchronized实现同步方法)
    Java7并发编程实战(一) 守护线程的创建和运行
    Java7并发编程实战(一) 线程的等待
  • 原文地址:https://www.cnblogs.com/tyb1222/p/4315958.html
Copyright © 2020-2023  润新知