Игнорирование @MappedSuperclass для не расширенного класса JPA - PullRequest
0 голосов
/ 20 февраля 2019

Если, например, у меня есть два класса FullTimeEmployee и PartTimeEmployee . FullTimeEmployee должен расширять таблицу Employee и получать доступ к этим свойствам с помощью @ MappedSuperclass , но класс PartTimeEmployee не требует какого-либо расширения, но выдает Ошибка JPA Если не расширены все остальные классы.

@MappedSuperclass
public class Employee {
      @Id
      @GeneratedValue
      private long id;
      private String name;
        .............
}

@Entity
public class FullTimeEmployee extends Employee {
  private int salary;
    .............
}

Я не хочу расширять PartTimeEmployee класс с сотрудником @ MappedSuperclass не позволяет мне делать это

@Entity
public class PartTimeEmployee {
  private int hourlyRate;
    .............
}

1 Ответ

0 голосов
/ 20 февраля 2019

Вам следует пересмотреть свое решение и присвоение имен сущностям.Если ваш PartTimeEmployee не расширяет Employee, вам нужен как минимум id, поэтому:

@Entity
public class PartTimeEmployee {
    @Id
    @GeneratedValue
    private long id;
    private int hourlyRate;
    . . .
}

ИЛИ вы также можете создать немного более умный дизайн и сопоставленный суперкласс, например:

@MappedSuperclass
public class BaseEntity {
    @Id
    @GeneratedValue
    private long id;

Если ваш Employee может расширить его и наследовать id:

@MappedSuperclass
public class Employee extends BaseEntity {
    private String name;
    . . .
}

Ваш FullTimeEmployee может быть таким, какой он есть, а PartTimeEmployee может расширяться BaseEntity наследовать id:

@Entity
public class PartTimeEmployee extends BaseEntity {
    private int hourlyRate;
. . .
}
...