Обходной путь описан ниже:
Определите ваш Parent
класс как MappedSuperClass . Давайте предположим, что родительский класс сопоставлен с PARENT_TABLE
@MappedSuperClass
public abstract class AbstractParent implements Serializable {
@Id
@GeneratedValue
private long id;
@Column(table="PARENT_TABLE")
private String someProperty;
// getter's and setter's
}
Для каждого подкласса расширьте класс AbstractParent
и определите его SecondaryTable . Любое постоянное поле, определенное в родительском классе, будет сопоставлено с таблицей, определенной как SecondaryTable . И, наконец, используйте AttributeOverrides, если необходимо
@Entity
@SecondaryTable("PARENT_TABLE")
public class Child extends AbstractParent {
private String childField;
public String getChildProperty() {
return childField;
}
}
И определить другую сущность с целью получения только родительского класса
@Entity
@Table(name="PARENT_TABLE")
@AttributeOverrides({
@AttributeOverride(name="someProperty", column=@Column(name="someProperty"))
})
public class Parent extends AbstractParent {}
Ничего другого. Смотрите, как показано выше, я использовал только аннотации JPA