@Repeatable(value=PrimaryKeyJoinColumns.class) @Target(value={TYPE,METHOD,FIELD}) @Retention(value=RUNTIME) public @interface PrimaryKeyJoinColumn
これはJOINEDマッピングストラテジーのエンティティのサブクラスのプライマリテーブルを、
そのスーパークラスのプライマリテーブルに結合するために使用されます。
もしくはセカンダリテーブルをプライマリテーブルに結合するためにSecondaryTableアノテーション内で使用されます。
もしくは参照元エンティティの主キーが参照先エンティティへの外部キーとして使用されるOneToOneマッピングで使用できます。
JOINEDマッピングストラテジーのエンティティのサブクラスにPrimaryKeyJoinColumnアノテーションが指定されていない場合、
サブクラスの外部キー列はスーパークラスのプライマリテーブルの主キー列と同じ名前を持つとみなされます。
Example: Customer and ValuedCustomer subclass
@Entity
@Table(name="CUST")
@Inheritance(strategy=JOINED)
@DiscriminatorValue("CUST")
public class Customer { ... }
@Entity
@Table(name="VCUST")
@DiscriminatorValue("VCUST")
@PrimaryKeyJoinColumn(name="CUST_ID")
public class ValuedCustomer extends Customer { ... }
SecondaryTable,
Inheritance,
OneToOne,
ForeignKey| 修飾子とタイプ | 任意要素と説明 |
|---|---|
java.lang.String |
columnDefinition
(オプション) カラムのDDLを生成するときに使用されるSQLフラグメント。
|
ForeignKey |
foreignKey
(オプション) テーブルの生成が有効な場合に主キー結合カラムの外部キー制約の生成を指定または制御するために使用されます。
|
java.lang.String |
name
(オプション) 現在のテーブルの主キー列の名前。
|
java.lang.String |
referencedColumnName
(オプション) 結合先のテーブルの主キー列の名前。
|
public abstract java.lang.String name
デフォルトでは(JOINEDマッピングストラテジーの場合は)スーパークラスのプライマリテーブルの主キー列と同じ名前になります。
または(SecondaryTableマッピングの場合は)プライマリテーブルの主キー列と同じ名前になります。
または(OneToOneマッピングの場合は)参照元エンティティのテーブルの主キー列と同じ名前になります。
public abstract java.lang.String referencedColumnName
デフォルトでは(JOINEDマッピングストラテジーの場合は)スーパークラスのプライマリテーブルの主キー列と同じ名前になります。
または(SecondaryTableマッピングの場合は)プライマリテーブルの主キー列と同じ名前になります。
または(OneToOneマッピングの場合は)参照元エンティティのテーブルの主キー列と同じ名前になります。
public abstract java.lang.String columnDefinition
OneToOneの主キーの関連付けでは使用しないでください。
デフォルトではカラムを推測された型で作成するために生成されたSQLです。
public abstract ForeignKey foreignKey
Translated by @megascus.