【发布时间】:2020-05-03 10:37:05
【问题描述】:
我有一个
公司表
部门表
员工表。
我正在使用休眠将数据保存在数据库中。
1.公司与部门之间的一对多关系。
一个公司可以有多个部门,一个部门可以有多个员工。
我已经完成了相应的实体的一对多映射,如下面的代码中所述。更新这些实体的请求来自 JSON 格式的 UI。
我在请求中提供了公司 ID、部门 ID 和员工 ID。 现在假设如果对于特定公司,数据库中有一个部门,其 dept_id 为 3。 .在 Json 请求中,我收到一个请求,要求为该特定公司更新一个部门。所以更新后,以前的条目应该保持原样,即 ID 为 3 的部门应该保持不变,并且应该添加一些部门 ID 的新条目,比如 4。
现在该公司将有两个部门,一个 ID 为 3,另一个 ID 为 4。
如何做到这一点??..此外,请求中不存在的部门条目也应从数据库中删除...员工与部门之间的关系也是如此,.请求可能会要求添加新的特定部门的员工,保留现有的员工。
请帮助我,在我的代码中必须完成什么配置/方法才能实现这一点。 下面是这三个表的代码:
@Entity
@Table(name = "COMPANY")
@Getter
@Setter
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "company_id")
private long companyId;
@Column(name = "company_region")
private String companayRegion;
@Column(name = "company_code")
private String companyCode;
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL)
private List<department> departments;
public Company() {
}
}
@Entity
@Table(name = "Department")
@Getter
@Setter
public class Department implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "dept_id")
private long departmentID;
@Column(name = "dep_code")
private String departmentCode;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "company_id")
private Company company;
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
private List<Employee> employees;
}
@Entity
@Table(name = "Employee")
@Getter
@Setter
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "employee_id")
private long employeeId;
@Column(name = "emp_code")
private String empCode;
@Column(name = "emp_name")
private String empname;
@Column(name = "employee_city")
private String employeeCity;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "dept_id")
private Department department;
}
【问题讨论】:
标签: java hibernate spring-boot jpa