5
@MappedSuperclass
public abstract class AbstractBaseModel{ }
@MappedSuperclass
public class Person extends AbstractBaseModel { }
@Entity
public class APerson extends Person { }
@Entity
public class BPerson extends Person { }
@Entity
public class Course extends AbstractBaseModel {
@ManyToOne
@JoinColumn(name ="person")
private Person person;
}
で注釈を付けたエンティティを参照します。どのように私はそのような継承のシナリオを達成するのですか?Hibernateは継承は、例外を与える構造上@MappedSuperclass
に行ったように、
@MappedSuperclass
を使用し、休止状態はPersonクラスを作成します。 APersonやBPersonは作成されませんでした。 PersonエンティティがAPersonとBPersonをマージしました。 – user706071@ user706071 - あなたは何を意味するのか分かりません。 Hibernateはクラスを生成しません。 APersonとBPersonはPersonとどう違うのですか?彼らは追加の属性を持たず、違いは行動に過ぎないのだろうか? – kostja
APersonクラスとBPersonクラスには、共通の属性(Person)以外の独自の属性があります。とにかく、返事をありがとう。あなたが提案するアプローチを使用します。 Hibernateは、Personという名前のテーブルを作成し、APersonとBPersonのすべての属性をマージし、DTYPE属性を追加してサブクラスタイプを区別しました。私のAPersonとBPersonはあまり変わらないので、この種の継承は私にも当てはまります。 – user706071