3.2.4.4. スーパークラスからのプロパティの継承


技術的なスーパークラスまたはビジネスに関連するスーパークラスを使用して、これらを通常のマップエンティティ (つまり、このエンティティに固有のテーブルではない) として含めずに共通のプロパティを共有することは役に立つ場合があります。このために、プロパティを @MappedSuperclass としてマップできます。
@MappedSuperclass
public class BaseEntity {
    @Basic
    @Temporal(TemporalType.TIMESTAMP)
    public Date getLastUpdate() { ... }
    public String getLastUpdater() { ... }
    ...
}

@Entity class Order extends BaseEntity {
    @Id public Integer getId() { ... }
    ...
}
Copy to Clipboard Toggle word wrap
データベースでは、この階層は id カラム、lastUpdate カラム、 および lastUpdater カラムを持つ Order テーブルとして表されます。組込みのスーパークラスプロパティマッピングはエンティティサブクラスにコピーされます。ただし、組込み可能なスーパークラスは階層のルートではないことに注意してください。

注記

@MappedSuperclass としてマップされていないスーパークラスからのプロパティは無視されます。

注記

Hibernate アノテーション @AccessType を使用しない限り、アクセスタイプ (フィールドまたはメソッド) はルートエンティティから継承されます。

注記

同じ表記法は、スーパークラスからのプロパティを保持するために @Embeddable オブジェクトに適用できます。また、これを行うには @MappedSuperclass を使用する必要があります (ただし、これを標準的な EJB3 機能と見なさないでください)。

注記

クラスを、マップされた継承階層の中間の @MappedSuperclass として指定することができます。

注記

@MappedSuperclass@Entity でアノテートされていない階層のクラスは無視されます。
@AttributeOverride アノテーションを使用すると、ルートエンティティレベルのエンティティスーパークラスで定義されたカラムをオーバーライドできます。
@MappedSuperclass
public class FlyingObject implements Serializable {

    public int getAltitude() {
        return altitude;
    }

    @Transient
    public int getMetricAltitude() {
        return metricAltitude;
    }

    @ManyToOne
    public PropulsionType getPropulsion() {
        return metricAltitude;
    }
    ...
}

@Entity
@AttributeOverride( name="altitude", column = @Column(name="fld_altitude") )
@AssociationOverride( name="propulsion", joinColumns = @JoinColumn(name="fld_propulsion_fk") )
public class Plane extends FlyingObject {
    ...
}
Copy to Clipboard Toggle word wrap
altitude プロパティはテーブル Planefld_altitude カラムで保持され、推進関係は fld_propulsion_fk 外部キーカラムで具体化されます。
@Entity クラス の @AttributeOverride および @AssociationOverride@MappedSuperclass クラス、@Embeddable オブジェクトを参照するプロパティを定義できます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat