Многослойные стратегии наследования с JPA / Hibernate - PullRequest
2 голосов
/ 01 апреля 2020

Можно ли смешивать типы наследования, если они не находятся на одном уровне, используя 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 |
+-----------+     | ...       |
                  +-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...