パッケージ jakarta.persistence
アノテーション型 MapKeyJoinColumn
@RepeatableSE(MapKeyJoinColumns.class) @TargetSE({METHODSE,FIELDSE}) @RetentionSE(RUNTIMESE) public @interface MapKeyJoinColumn
マップキーであるエンティティへのマッピングを指定します。マップキーの結合列は、マップを表すために使用されるターゲットエンティティのコレクションテーブル、結合テーブル、テーブルにあります。MapKeyJoinColumn
アノテーションが指定されていない場合、単一の結合列が想定され、デフォルト値が適用されます。Example 1: @Entity public class Company { @Id int id; ... @OneToMany // unidirectional @JoinTable(name="COMPANY_ORGANIZATION", joinColumns=@JoinColumn(name="COMPANY"), inverseJoinColumns=@JoinColumn(name="VICEPRESIDENT")) @MapKeyJoinColumn(name="DIVISION") Map<Division, VicePresident> organization; } Example 2: @Entity public class VideoStore { @Id int id; String name; Address location; ... @ElementCollection @CollectionTable(name="INVENTORY", joinColumns=@JoinColumn(name="STORE")) @Column(name="COPIES_IN_STOCK") @MapKeyJoinColumn(name="MOVIE", referencedColumnName="ID") Map<Movie, Integer> videoInventory; ... } @Entity public class Movie { @Id long id; String title; ... } Example 3: @Entity public class Student { @Id int studentId; ... @ManyToMany // students and courses are also many-many @JoinTable(name="ENROLLMENTS", joinColumns=@JoinColumn(name="STUDENT"), inverseJoinColumns=@JoinColumn(name="SEMESTER")) @MapKeyJoinColumn(name="COURSE") Map<Course, Semester> enrollment; ... }
- 導入:
- 2.0
- 関連事項:
ForeignKey
オプション要素のサマリー
オプション要素 修飾子と型 オプションの要素 説明 StringSE
columnDefinition
(オプション)列の DDL を生成するときに使用される SQL フラグメント。ForeignKey
foreignKey
(オプション)テーブル生成が有効な場合に、外部キー制約の生成を指定または制御するために使用されます。boolean
insertable
(オプション)永続プロバイダーによって生成された SQL INSERT ステートメントに列が含まれるかどうか。StringSE
name
(オプション)マップキーの外部キー列の名前。boolean
nullable
(オプション)外部キー列が NULL 可能かどうか。StringSE
referencedColumnName
(オプション)この外部キー列によって参照される列の名前。StringSE
table
(オプション)外部キー列を含むテーブルの名前。boolean
unique
(オプション)プロパティが一意のキーであるかどうか。boolean
updatable
(オプション)永続プロバイダーによって生成された SQL UPDATE ステートメントに列が含まれるかどうか。
要素の詳細
name
StringSE name
(オプション)マップキーの外部キー列の名前。それが見つかるテーブルは、コンテキストによって異なります。- 結合が要素コレクションのマップキーに対するものである場合、外部キー列はマップ値のコレクションテーブルにあります。
- 結合が ManyToMany エンティティ関連のマップキー用であるか、結合テーブルを使用する OneToMany エンティティ関連用である場合、外部キー列は結合テーブルにあります。
- 結合が外部キーマッピング戦略を使用する OneToMany エンティティ関連に対するものである場合、マップキーの外部キー列は、マップの値であるエンティティのテーブルにあります。
デフォルト(単一の結合列が使用されている場合にのみ適用されます)以下の連結: 参照エンティティまたは埋め込み可能クラスの参照関連プロパティまたはフィールドの名前。"_" ; " キー "。
- デフォルト:
- ""
referencedColumnName
StringSE referencedColumnName
(オプション)この外部キー列によって参照される列の名前。参照される列は、ターゲットエンティティのテーブルにあります。デフォルト(単一の結合列が使用されている場合にのみ適用されます)参照されるテーブルの主キー列と同じ名前
- デフォルト:
- ""
columnDefinition
StringSE columnDefinition
(オプション)列の DDL を生成するときに使用される SQL フラグメント。デフォルトは、列のプロバイダーによって生成された SQL です。- デフォルト:
- ""
table
StringSE table
(オプション)外部キー列を含むテーブルの名前。- 結合が要素コレクションのマップキーに対するものである場合、外部キー列はマップ値のコレクションテーブルにあります。
- 結合が ManyToMany エンティティ関連のマップキー用であるか、結合テーブルを使用する OneToMany エンティティ関連用である場合、外部キー列は結合テーブルにあります。
- 結合が外部キーマッピング戦略を使用する OneToMany エンティティ関連に対するものである場合、マップキーの外部キー列は、マップの値であるエンティティのテーブルにあります。
デフォルト:
- マップが要素コレクション用である場合、マップ値のコレクションテーブルの名前。
- マップが結合テーブルを使用する OneToMany または ManyToMany エンティティ関連用である場合、マップの結合テーブルの名前。
- マップが外部キーマッピング戦略を使用する OneToMany エンティティ関連用である場合、マップの値であるエンティティのプライマリテーブルの名前。
- デフォルト:
- ""
foreignKey
ForeignKey foreignKey
(オプション)テーブル生成が有効な場合に、外部キー制約の生成を指定または制御するために使用されます。この要素が指定されていない場合、永続性プロバイダーのデフォルトの外部キー戦略が適用されます。- 導入:
- 2.1
- デフォルト:
- @jakarta.persistence.ForeignKey(jakarta.persistence.ConstraintMode.PROVIDER_DEFAULT)