Вторичные таблицы с InheritanceType.TABLE_PER_CLASS - PullRequest
0 голосов
/ 23 сентября 2019

Cosider

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract class A {
    @Id
    int id;

    @Column
    int a;
}

и

@Entity
@Table
class B1 extends A {
}

@Entity
@Table
class B2 extends A {
}

Возможно ли иметь столбец a во вторичной таблице, поэтому есть одна вторичная таблица для A1 и другая для A2?

Существуют ли другие подходы разделения таблицы в Hibernate, работающие для всех подклассов с InheritanceType.TABLE_PER_CLASS?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

В моем случае лучше использовать отношение @OneToOne и переместить поля в сущность

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract class B {
    @Id
    int id;
}

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract class A {

    @Id
    int id;

    @Column 
    A a;
}

@Entity
@Table
class A1 extends A {
}

@Entity
@Table
class A2 extends A {
}

@Entity
@Table
class B1 extends A {
    @OneToOne
    A1 aFields;
}

@Entity
@Table
class B2 extends A {
    @OneToOne
    A2 aFields;
}
0 голосов
/ 23 сентября 2019

Да, есть - используйте @SecondaryTable. (https://en.wikibooks.org/wiki/Java_Persistence/Tables#Multiple_tables)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...