У меня есть вопрос относительно аннотации и наследования Hibernate.Hibernate Дополнительное наследование
В базе данных у меня есть таблица parent
и таблица child
. Таблица parent
имеет столбцы, которые не реплицируются в таблице child
(отношение joined
в спящем режиме). Для каждой строки таблицы child
в таблице parent
есть строка. В этом случае строка в таблице child
и соответствующая строка в таблице parent
имеют то же значение id
. Однако таблица parent
имеет строки, которые не имеют соответствующей строки в строке child
.
Конкретный child
объекта представлены путем объединения между child
и parent
и конкретным parent
просто представлена в таблице parent
.
Объектно-ориентированный способ представления это иметь следующее:
parent
класс:
@Entity
@Table(name = "Parent")
@Inheritance(strategy = InheritanceType.JOINED)
public class Parent{
@Id
@GeneratedValue
@Column(name = "id")
private int id;
// More properties
}
child
класс:
@Entity
@Table(name = "Child")
@PrimaryKeyJoinColumn(name="id")
public class Child extends Parent{
// More properties
}
Когда я перечисляю все у детей, использующих List child = session.createQuery("FROM Child").list();
, все идет хорошо. Однако моя проблема заключается в том, что когда я пытаюсь перечислить родителей, используя List parent = session.createQuery("FROM Parent").list();
, он возвращает список объектов child
.
Есть ли способ представить «необязательное» наследование в Hibernate?