@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.