У меня есть
стол компании
стол отдела
стол сотрудника.
Я использую спящий режим для сохранения данных в базе данных.
1. Отношения «один ко многим» между компанией и отделом.
В компании может быть несколько отделов, а в отделе может быть несколько сотрудников.
Я сделал соответствующее сопоставление сущностей один ко многим, как упомянуто в коде ниже. Запрос на обновление этих объектов поступает из пользовательского интерфейса в формате JSON.
Я указал в запросе идентификатор компании, идентификатор отдела и идентификатор сотрудника. Теперь предположим, что для конкретной компании в базе данных есть один отдел с dept_id 3. , В запросе Json я получаю запрос на обновление этой конкретной компании еще одним отделом. Поэтому после обновления предыдущая запись должна оставаться без изменений, т. Е. Отдел с идентификатором 3 должен оставаться нетронутым, а новая запись должна добавляться с некоторым идентификатором отдела, скажем, 4.
Теперь у этой компании будет два отдела, один с идентификатором 3, а другой с идентификатором 4.
Как этого можно достичь ?? .. Также записи отделов, которых нет в запросе, должны быть удалены из базы данных ... То же самое касается отношений между сотрудником и отделом, .request может попросить добавить нового сотрудника для определенного отдела, оставив существующий.
Пожалуйста, помогите мне с этим, что Конфигурация / подход должны быть сделаны в моем коде, чтобы достичь этого. Вот код для этих трех таблиц:
@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;
}