Можно ли смешивать типы наследования, если они не находятся на одном уровне, используя hibernate / JPA?
Приведенные ниже имена являются лишь примерами, но JPA, кажется, ожидает таблицы для листьев и цветов, даже если их ближайшие Тип наследования - SINGLE_TABLE.
Я почти уверен, что это не поддерживается, но, возможно, почему нет?
Я использую Hibernate 5.4.2.Final
@Entity
@Table
@Inheritance(strategy = JOINED)
abstract class Trunk {
@Id private Long id;
...
}
@Entity
@Inheritance(strategy = SINGLE_TABLE)
@DiscriminatorColumn(name = "kind")
abstract class Branch extends Trunk {
private String kind;
...
}
@Entity
@DiscriminatorValue(value = "leaf")
class Leaf extends Branch {
...
}
@Entity
@DiscriminatorValue(value = "flower")
class Flower extends Branch {
...
}
Схема будет выглядеть примерно так:
+-----------+ +-----------+
| Trunk | | Branch |
+-----------+ +-----------+
| id:bigint |1---1| id:bigint |
| ... | | kind:text |
+-----------+ | ... |
+-----------+