Я использую JPA JOINED стратегию наследования с 3 абстрактными классами и 2 конкретными.Вот так (код сокращен для примера):
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
abstract class Employee {
@Id
private Long id;
private String firstName;
private String secondName;
}
@Entity
abstract class ProjectManager extends Employee {
@OneToMany(mappedBy="manager")
private List<Developer> developers;
}
@Entity
abstract class Developer extends Employee {
@ManyToOne
@JoinColumn(name="project_manager_id")
private ProjectManager manager;
}
@Entity
class JavaProjectManager extends ProjectManager {
private String someCustomProperty;
}
@Entity
class JavaDeveloper extends Developer {
private String skill;
}
Таким образом, JPA создает 5 таблиц.Но одна из этих таблиц, абстрактная ProjectManager , пуста.Я имею в виду, что таблица ProjectManager имеет только столбец идентификатора из-за стратегии наследования.
Мой вопрос: как мне избежать этой дополнительной таблицы для абстрактного класса ProjectManager, сохраняя ту же иерархию классов?
Iне удалось удалить @Entity в классе ProjectManager, потому что мне все еще нужны двунаправленные отношения с классом разработчика.
Редактировать:
Кроме того, я не хочу перемещать разработчиков OneToMany из ProjectManager в JavaProjectManager, потому что у меня естьбольше классов, которые выходят из ProjectManager и нуждаются в разработчиках.