Java - JPA: как создать таблицу для каждого подкласса, но не для суперкласса? - PullRequest
1 голос
/ 24 марта 2012

У меня есть структура класса, как:

abstract class A {
    String a;
}

class B extends A {
    String b;
}

class C extends A {
    String c;
}

Теперь я хочу, чтобы JPA создал таблицу для каждого подкласса.

enter image description here

Я посмотрел несколько предыдущих вопросов, но я в замешательстве. Как я могу сопоставить эти классы?

Ответы [ 2 ]

5 голосов
/ 24 марта 2012

Если A наследуется из-за отображений, и вам не требуется отдельная сущность для него, вы можете определить его как MappedSuperClass .Сопоставленный суперкласс предназначен только для наследования отображений, вы не можете запрашивать его.

С другой стороны, если требуется реальное наследование - в зависимости от реализации - вы можете перейти на таблицу для (конкретного) класса наследованиестратегия.Поддержка этой стратегии не является обязательной, поэтому она не гарантирует работу со всеми реализациями.Он поддерживается по крайней мере свежими версиями

В вашем случае необходимым шагом было бы добавить следующее к классу A: @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

0 голосов
/ 24 марта 2012

Почему бы не аннотировать класс A с помощью @MappedSuperClass, использовать подкласс Table или Table для стратегии наследования Concrete Class

...