Игнорирование @MappedSuperclass для нерасширенного класса JPA

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

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

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

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

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

Пожалуйста, уточните подробнее. Какое исключение будет и чего вы хотите достичь. Согласно вашему вопросу, PartTimeEmployee является независимой организацией, которая будет работать должным образом.

Jaspreet Jolly 20.02.2019 07:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны пересмотреть свой дизайн и наименования сущностей. Если ваш 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;
. . .
}

Другие вопросы по теме