3.4.3. プロパティ


3.4.3.1. アクセスタイプ

アクセスタイプは、エンティティ階層の @Id または @EmbeddedId の位置から推測されます。サブエンティティ、組み込みオブジェクト、およびマップされたスーパークラスはルートエンティティからアクセスタイプを継承します。
Hibernate で、アクセスタイプをオーバーライドして以下のことを行えます。
  • カスタムアクセスタイプ方針を使用する
  • アクセスタイプをクラスレベルまたはプロパティレベルで調整する
この動作をサポートするために @AccessType アノテーションが導入されました。アクセスタイプは以下のものに対して定義できます。
  • エンティティ
  • スーパークラス
  • 組み込み可能なオブジェクト
  • プロパティ
アノテートされたエレメントに対するアクセスタイプはオーバーライドされます。クラスでオーバーライドされた場合は、該当するクラスのすべてのプロパティはアクセスタイプを継承します。ルートエンティティの場合は、階層全体に対してアクセスタイプがデフォルトとして見なされます (クラスまたはプロパティレベルでオーバーライド可能)。
アクセスタイプが "property" としてマークされている場合は、getters がアノテーションに対してスキャンされ、アクセスタイプが "field" としてマークされている場合は、フィールドがアノテーションに対してスキャンされます。それ以外の場合は、@Id または @embeddedId でマークされたエレメントがスキャンされます。
プロパティのアクセスタイプはオーバーライドできますが、アノテートするエレメントは影響されません。たとえば、アクセスタイプ field を持つエンティティは @AccessType("property") でフィールドをアノテートできます。アクセスタイプはこの属性のプロパティとなり、アノテーションをフィールドに対して実行する必要があります。
スーパークラスまたは組み込み可能なオブジェクトがアノテートされない場合は、ルートエンティティアクセスタイプが使用されます (アクセスタイプが中間スーパークラスまたは組み込み可能なオブジェクトに対して定義された場合であっても)。ロシア人形原則は適用されません。
@Entity
public class Person implements Serializable {
    @Id  @GeneratedValue //access type field
    Integer id;

    @Embedded
    @AttributeOverrides({
    @AttributeOverride(name = "iso2", column = @Column(name = "bornIso2")),
    @AttributeOverride(name = "name", column = @Column(name = "bornCountryName"))
            })
    Country bornIn;
}

@Embeddable
@AccessType("property") //override access type for all properties in Country
public class Country implements Serializable {
    private String iso2;
    private String name;

    public String getIso2() {
        return iso2;
    }

    public void setIso2(String iso2) {
        this.iso2 = iso2;
    }

    @Column(name = "countryName")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.