Hibernate Springboot JPA类继承问题

Hibernate Springboot JPA类继承问题,hibernate,spring-boot,spring-data-jpa,Hibernate,Spring Boot,Spring Data Jpa,我有两类:个人和员工。 员工源于人。Person不是抽象的,可能是连字实体。 人员表:id(主键)、名、姓 员工表:员工id(PK)、人员id(FK)、工作开始日期 这些类如下所示: 人员类别: @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "persons") @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) public class Per

我有两类:个人和员工。
员工源于人。Person不是抽象的,可能是连字实体。
人员表:id(主键)、名、姓

员工表:员工id(PK)、人员id(FK)、工作开始日期

这些类如下所示:
人员类别:

@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "persons")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName;

    public Person() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}
@Entity
@Table(name = "employees")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@PrimaryKeyJoinColumn(name = "person_id")
public class Employee extends Person {
    @Id
    @Column(name = "employee_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long employeeId;

    @Column(name = "start_work_date")
    private Date startDate;

    public Employee() {
    }

    public Long getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(Long employeeId) {
        this.employeeId = employeeId;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }
}
员工类别:

@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "persons")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName;

    public Person() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}
@Entity
@Table(name = "employees")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@PrimaryKeyJoinColumn(name = "person_id")
public class Employee extends Person {
    @Id
    @Column(name = "employee_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long employeeId;

    @Column(name = "start_work_date")
    private Date startDate;

    public Employee() {
    }

    public Long getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(Long employeeId) {
        this.employeeId = employeeId;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }
}
还有我的寄托:

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}
public接口EmployeeRepository扩展了JpaRepository{
}
当我调用get of employees时,employees成员本身已填充,但我的所有超类(Person)成员都为空。。。
我必须将FK成员添加到员工类别中吗?

是否有理由选择继承而不是组合(与
员工
人员
之间的关系)?正如我所读到的,使用InheritanceType.JOINED策略,员工不得拥有自己的id,因为带个人的comon id是加入标准,但在组织中,您有您的id和员工编号。。。组合是可能的,但在面向对象中,员工对个人的继承关系是有意义的。一对一毫无意义。继承是正确的,但是从子类中删除id。是否可以将员工id作为pk保留在db表中,或者也应该删除它?