У меня есть такая структура:
абстрактный класс Aабстрактный класс B расширяет Aабстрактный класс C расширяет B
Это моё настоящее отображение:</p>
<pre><code>@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@Table(name = "TAB_A")
@DiscriminatorColumn(name="DISCRIMINATOR_A", discriminatorType=DiscriminatorType.STRING)
public abstract class A {
}
@Entity
@DiscriminatorValue("VALUE")
@SecondaryTable(name = "TAB_B", pkJoinColumns = {@PrimaryKeyJoinColumn(name="ID_A")})
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="DISCRIMINATOR_B",discriminatorType=DiscriminatorType.STRING)
public abstract class B extends A
{
}
@Entity
@DiscriminatorValue("VALUEB")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class C extends B
{
}
У меня есть столбец дикриминатора между A и B, который является дискриминатором A.У меня есть столбец дикриминатора между B и C, который является дискриминатором B.
Наследование между A и B работает.Наследование между B и C не работает.Я прочитал этот пункт:
11.1.10 Аннотация DiscriminatorColumn
Для стратегии отображения SINGLE_TABLE и, как правило, также для стратегии JOINED, поставщик сохраняемости будет использовать столбец дискриминатора типа.Аннотация DiscriminatorColumn используется для определения столбца дискриминатора для стратегий отображения наследования SINGLE_TABLE и JOINED.
Стратегия и столбец дискриминатора указываются только в корне иерархии или подчиненной иерархии классов сущностей, в которой другая стратегия наследования
Кто-нибудь имеет представление о том, как сделать это отображение?
Спасибо.