我需要创建一个应该存储员工历史的实体。这是我的表
CREATE TABLE employee_history (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
employee_id INT,
company_id INT,
hire_date DATE DEFAULT NULL,
resign_date DATE DEFAULT NULL,
FOREIGN KEY (employee_id) REFERENCES employee (id),
FOREIGN KEY (company_id) REFERENCES company (id)
);
问题是我只需要存储一个实体EmployeeHistory
,而不是Collection<EmployeeHistory>
。任何想法如何解决这个问题?
UPD:
员工Mike的结果:
1, Mike, GridDynamics, 2000-08-10, 2003-01-01
2, Mike, IBM, 2012-04-03, 2014-02-15
3, Mike, GridDynamics, 1997-04-17, 1998-03-08
UPD2:
我的Company
实体类
@Entity
@Table(name = "company")
public class Company implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column
private String name;
@JoinColumn(name = "company_id")
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonProperty("employees")
private List<Employee> employees;
Employee
类
@Entity
@Table(name = "employee")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("id")
Integer id;
@Column
@JsonProperty("name")
String name;
@ManyToOne
@JoinColumn(name = "company_id", nullable = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonProperty("company")
private Company company;
答案 0 :(得分:0)
考虑到您有许多与员工相关的历史记录。
您可以创建一个名为EMPLOYEE
的表和另一个名为EMPLOYEE_HISTORY
现在存储员工历史记录,假设一名员工有5条记录。
您可以在EMPLOYEE
中创建包含员工详细信息的条目
您可以在FK_EMPLOYEE
中拥有EMPLOYEE_HISTORY
,这会将历史记录表中的所有记录映射到EMPLOYEE
表中的唯一员工条目,因此您可以拥有与员工关联的所有5条历史记录。