パッケージ jakarta.persistence
アノテーションインターフェース JoinColumn
@RepeatableSE(JoinColumns.class)
@TargetSE({METHODSE,FIELDSE})
@RetentionSE(RUNTIMESE)
public @interface JoinColumn
エンティティの関連付けまたは要素コレクションを結合するための列を指定します。
JoinColumn
アノテーション自体がデフォルト設定されている場合、単一の結合列が想定され、デフォルト値が適用されます。例:
サンプル: 外部キーマッピングを使用した一方向の 1 対多の関連付け
オプション要素の概要
オプション要素修飾子と型オプションの要素説明(オプション) 列に適用される制約を確認します。(オプション)列の DDL を生成するときに使用される SQL フラグメント。(オプション) 列に適用されるコメント。(オプション)テーブル生成が有効な場合に、外部キー制約の生成を指定または制御するために使用されます。boolean
(オプション)永続プロバイダーによって生成された SQL INSERT ステートメントに列が含まれるかどうか。(オプション)外部キー列の名前。boolean
(オプション)外部キー列が NULL 可能かどうか。(オプション) この列を宣言する、生成された DDL に追加される SQL フラグメント。(オプション)この外部キー列によって参照される列の名前。(オプション)列を含むテーブルの名前。boolean
(オプション)プロパティが一意のキーであるかどうか。boolean
(オプション)永続プロバイダーによって生成された SQL UPDATE ステートメントに列が含まれるかどうか。
要素の詳細
name
StringSE name(オプション)外部キー列の名前。この列が存在するテーブルはコンテキストによって異なります。
- 結合が外部キーマッピング戦略を使用した
OneToOne
またはManyToOne
マッピングの場合、外部キー列はソースエンティティまたは埋め込み可能テーブルのテーブル内にあります。 - 結合が外部キーマッピング戦略を使用した一方向
OneToMany
マッピングに対するものである場合、外部キーはターゲットエンティティのテーブル内にあります。 - 結合が、結合テーブルを使用した
ManyToMany
マッピング、またはOneToOne
または双方向ManyToOne
/OneToMany
マッピングに対するものである場合、外部キーは結合テーブル内にあります。 - 結合が
ElementCollection
に対するものである場合、外部キーはコレクションテーブル内にあります。
デフォルト (単一の結合列が使用される場合にのみ適用されます): 次の連結: 参照関連プロパティの名前、または参照エンティティまたは埋め込み可能クラスのフィールド。"
_
"; 参照される主キー列の名前。エンティティ内にそのような参照関連プロパティまたはフィールドが存在しない場合、または結合が要素コレクションに対するものである場合、結合列名は次のものを連結したものとして形成されます。エンティティの名前。"_
"; 参照される主キー列の名前。- デフォルト:
- ""
- 結合が外部キーマッピング戦略を使用した
referencedColumnName
StringSE referencedColumnName(オプション)この外部キー列によって参照される列の名前。- ここで説明する場合以外のエンティティ関連マッピングで使用する場合、参照される列はターゲットエンティティのテーブルにあります。
- 一方向
OneToMany
外部キーマッピングで使用すると、参照される列はソースエンティティのテーブル内にあります。 JoinTable
アノテーション内で使用される場合、参照されるキー列は、所有エンティティのエンティティテーブル内にあり、結合が逆結合定義の一部である場合は逆エンティティ内にあります。CollectionTable
マッピングで使用される場合、参照される列は、コレクションを含むエンティティのテーブル内にあります。
デフォルト(単一の結合列が使用されている場合にのみ適用されます): 参照されるテーブルの主キー列と同じ名前。
- デフォルト:
- ""
unique
boolean unique(オプション) プロパティが一意のキーであるかどうか。これはテーブルレベルでのUniqueConstraint
アノテーションのショートカットであり、一意キー制約が 1 つのフィールドのみである場合に便利です。外部キーの一部である主キーに対応する結合列に対してこれを明示的に指定する必要はありません。- デフォルト:
- false
nullable
boolean nullable(オプション)外部キー列が NULL 可能かどうか。- デフォルト:
- true
insertable
boolean insertable(オプション)永続プロバイダーによって生成された SQL INSERT ステートメントに列が含まれるかどうか。- デフォルト:
- true
updatable
boolean updatable(オプション)永続プロバイダーによって生成された SQL UPDATE ステートメントに列が含まれるかどうか。- デフォルト:
- true
columnDefinition
StringSE columnDefinition(オプション)列の DDL を生成するときに使用される SQL フラグメント。デフォルトでは、列に対して生成された SQL になります。
- デフォルト:
- ""
options
StringSE options(オプション) この列を宣言する、生成された DDL に追加される SQL フラグメント。columnDefinition()
と組み合わせて使用することはできません。- 導入:
- 3.2
- デフォルト:
- ""
table
StringSE table(オプション)列を含むテーブルの名前。テーブルが指定されていない場合、その列は該当するエンティティのプライマリテーブルにあると見なされます。デフォルト:
- 結合が外部キーマッピング戦略を使用した
OneToOne
またはManyToOne
マッピングの場合、ソースエンティティまたは埋め込み可能テーブルのテーブルの名前。 - 結合が外部キーマッピング戦略を使用した単方向 OneToMany マッピング用である場合、ターゲットエンティティのテーブルの名前。
- 結合が、結合テーブルを使用した
ManyToMany
マッピング、またはOneToOne
または双方向ManyToOne
/OneToMany
マッピングの場合、結合テーブルの名前。 - 結合が要素コレクションに対するものである場合、コレクションテーブルの名前。
- デフォルト:
- ""
- 結合が外部キーマッピング戦略を使用した
foreignKey
ForeignKey foreignKey(オプション) テーブル生成が有効な場合に、外部キー制約の生成を指定または制御するために使用されます。この要素が指定されていない場合、デフォルトの外部キー戦略が永続化プロバイダーによって選択されます。- 導入:
- 2.1
- デフォルト:
- @jakarta.persistence.ForeignKey(PROVIDER_DEFAULT)
check
CheckConstraint[] check(オプション) 列に適用される制約を確認します。これらは、テーブル生成が有効な場合にのみ使用されます。- 導入:
- 3.2
- デフォルト:
- {}
comment
StringSE comment(オプション) 列に適用されるコメント。これは、テーブル生成が有効な場合にのみ使用されます。- 導入:
- 3.2
- デフォルト:
- ""