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