Проблема наследования классов в Springboot JPA - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть 2 класса: человек и работник.
Сотрудник происходит от человека. Персона не абстрактна и может быть лигатной сущностью.
Person table: id (PK), first_name, last_name
Employee table: employee_id (PK), person_id (FK), work_start_date
Классы выглядят так: Person class:

@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;
    }
}

Employee class:

@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;
    }
}

И мой repositroy:

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

Когда я вызываю get сотрудников, сами члены сотрудника заполняются, но все члены моего суперкласса (Person) равны нулю ... Должен ли я добавить в класс сотрудника члена FK к человеку?

...