Hibernate, MySQL. Композитный ПК и генератор пользовательских идентификаторов
Для простоты я напишу следующий пример, который показывает мою проблему. У нас есть 3 объекта: подразделение, звание и сотрудник. По сути, каждое подразделение имеет свой собственный список рангов с различными уровнями оплаты труда, поэтому я хочу, чтобы мой идентификатор для ранга основывался на разделении и уровне оплаты труда, поэтому ранг сотрудников будет меняться в зависимости от их уровня оплаты и подразделения, которым они являются в настоящее время. работает в.
Пример: у нас есть 2 отдела, исследовательский и инженерный, каждый из которых имеет свой собственный список рангов (для простоты мы добавим только один к каждому, главному инженеру и главному исследователю соответственно). Когда я переведу моего главного инженера из инженерного отдела в исследовательскую, он станет главным исследователем.
Итак, вопрос в том, как я должен изменить свои сущности ниже, чтобы достичь этого? Кроме того, как создать собственный генератор для моего поля уровня оплаты внутри сущности Rank, чтобы он автоматически увеличивал свое значение для каждого уникального подразделения?
Division.java
@Entity
@Table(name = "division")
public class Division {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String name;
@OneToMany
private List<Rank> rankList;
}
Rank.java
@Entity
@Table(name = "rank")
public class Rank {
@ManyToOne
private Division division;
@Column
private Long grade;
@Column
private String name;
}
Employee.java
@Entity
@Table(name = "employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@ManyToOne
private Division division;
@ManyToOne
private Rank rank;
}