@Target(value={METHOD,FIELD})
@Retention(value=RUNTIME)
public @interface CollectionTable
デフォルトでは組み込みクラスまたは基本型に対応するコレクションテーブルのカラムは組み込みクラスの属性またはColumn
アノテーションのデフォルト値に従って基本型から派生します。
基本型の場合はカラム名は値がコレクションのフィールドまたはプロパティの名前から派生します。
組み込みクラスの場合はカラム名は組み込みクラスのフィールドまたはプロパティ名から派生します。
ElementCollection
アノテーションに加えてColumn
アノテーションを使用します。
ElementCollection
アノテーションに加えてAttributeOverride
やAttributeOverrides
アノテーションを使用することができます。
組み込みクラスにほかのエンティティへの参照が含まれている場合、それらの参照に関連するカラムのデフォルト値はAssociationOverride
やAssociationOverrides
を使用することで上書きすることができます。
CollectionTable
アノテーションがない場合はCollectionTable
アノテーションの要素のデフォルト値が適用されます。
Example: @Embeddable public class Address { protected String street; protected String city; protected String state; ... } @Entity public class Person { @Id protected String ssn; protected String name; protected Address home; ... @ElementCollection // デフォルトのテーブルを使用 (PERSON_NICKNAMES) @Column(name="name", length=50) protected Set<String> nickNames = new HashSet(); ... } @Entity public class WealthyPerson extends Person { @ElementCollection @CollectionTable(name="HOMES") // デフォルトの結合カラム名を使用 @AttributeOverrides({ @AttributeOverride(name="street", column=@Column(name="HOME_STREET")), @AttributeOverride(name="city", column=@Column(name="HOME_CITY")), @AttributeOverride(name="state", column=@Column(name="HOME_STATE")) }) protected Set<Address> vacationHomes = new HashSet(); ... }
ElementCollection
,
AttributeOverride
,
AssociationOverride
,
Column
修飾子とタイプ | 任意要素と説明 |
---|---|
java.lang.String |
catalog
(オプション) テーブルのカタログ。
|
ForeignKey |
foreignKey
(オプション) テーブルの生成が有効な場合に
joinColumns 要素に関係するカラムのための外部キー制約の生成を指定または制御するために使用されます。 |
Index[] |
indexes
(オプション) テーブルのためのインデックス。
|
JoinColumn[] |
joinColumns
(オプション)エンティティのプライマリーテーブルを参照するコレクションテーブルの外部キーのカラム。
|
java.lang.String |
name
(オプション) コレクションテーブルの名前。
|
java.lang.String |
schema
(オプション) テーブルのスキーマ。
|
UniqueConstraint[] |
uniqueConstraints
(オプション) テーブルに設置されるユニーク制約。
|
public abstract java.lang.String name
public abstract java.lang.String catalog
public abstract java.lang.String schema
public abstract JoinColumn[] joinColumns
JoinColumn
と同じです。
(つまり、エンティティの名前 + "_" + 参照された主キーのカラムの名前)
しかしながら、複数の結合カラムが存在する場合はJoinColumns
アノテーションを使用して各結合カラムに対して
JoinColumn
アノテーションを指定する必要があります。
この場合、それぞれのJoinColumn
アノテーションのname
要素とreferencedColumnName
要素の両方を指定する必要があります。public abstract ForeignKey foreignKey
joinColumns
要素に関係するカラムのための外部キー制約の生成を指定または制御するために使用されます。
この要素とjoinColumns
要素のいずれかのforeignKey
要素の両方が指定されていた場合の挙動は未定義です。
いずれの場所にも外部キーのアノテーション要素が指定されていない場合は、永続化プロバイダのデフォルトの外部キー戦略が適用されます。public abstract UniqueConstraint[] uniqueConstraints
public abstract Index[] indexes
Translated by @megascus.