3.2.4.4. スーパークラスからのプロパティの継承
技術的なスーパークラスまたはビジネスに関連するスーパークラスを使用して、これらを通常のマップエンティティ (つまり、このエンティティに固有のテーブルではない) として含めずに共通のプロパティを共有することは役に立つ場合があります。このために、プロパティを
@MappedSuperclass としてマップできます。
データベースでは、この階層は
id カラム、lastUpdate カラム、 および lastUpdater カラムを持つ Order テーブルとして表されます。組込みのスーパークラスプロパティマッピングはエンティティサブクラスにコピーされます。ただし、組込み可能なスーパークラスは階層のルートではないことに注意してください。
注記
@MappedSuperclass としてマップされていないスーパークラスからのプロパティは無視されます。
注記
Hibernate アノテーション
@AccessType を使用しない限り、アクセスタイプ (フィールドまたはメソッド) はルートエンティティから継承されます。
注記
同じ表記法は、スーパークラスからのプロパティを保持するために
@Embeddable オブジェクトに適用できます。また、これを行うには @MappedSuperclass を使用する必要があります (ただし、これを標準的な EJB3 機能と見なさないでください)。
注記
クラスを、マップされた継承階層の中間の
@MappedSuperclass として指定することができます。
注記
@MappedSuperclass と @Entity でアノテートされていない階層のクラスは無視されます。
@AttributeOverride アノテーションを使用すると、ルートエンティティレベルのエンティティスーパークラスで定義されたカラムをオーバーライドできます。
altitude プロパティはテーブル Plane の fld_altitude カラムで保持され、推進関係は fld_propulsion_fk 外部キーカラムで具体化されます。
@Entity クラス の @AttributeOverride および @AssociationOverride、@MappedSuperclass クラス、@Embeddable オブジェクトを参照するプロパティを定義できます。