パッケージ 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
    • オプション要素のサマリー

      オプション要素  
      修飾子と型 オプションの要素 説明
      StringSEcolumnDefinition
      (オプション)列の DDL を生成するときに使用される SQL フラグメント。
      ForeignKeyforeignKey
      (オプション)テーブル生成が有効な場合に、外部キー制約の生成を指定または制御するために使用されます。
      booleaninsertable
      (オプション)永続プロバイダーによって生成された SQL INSERT ステートメントに列が含まれるかどうか。
      StringSEname
      (オプション)マップキーの外部キー列の名前。
      booleannullable
      (オプション)外部キー列が NULL 可能かどうか。
      StringSEreferencedColumnName
      (オプション)この外部キー列によって参照される列の名前。
      StringSEtable
      (オプション)外部キー列を含むテーブルの名前。
      booleanunique
      (オプション)プロパティが一意のキーであるかどうか。
      booleanupdatable
      (オプション)永続プロバイダーによって生成された SQL UPDATE ステートメントに列が含まれるかどうか。
    • 要素の詳細

      • name

        StringSE name
        (オプション)マップキーの外部キー列の名前。それが見つかるテーブルは、コンテキストによって異なります。
        • 結合が要素コレクションのマップキーに対するものである場合、外部キー列はマップ値のコレクションテーブルにあります。
        • 結合が ManyToMany エンティティ関連のマップキー用であるか、結合テーブルを使用する OneToMany エンティティ関連用である場合、外部キー列は結合テーブルにあります。
        • 結合が外部キーマッピング戦略を使用する OneToMany エンティティ関連に対するものである場合、マップキーの外部キー列は、マップの値であるエンティティのテーブルにあります。

        デフォルト(単一の結合列が使用されている場合にのみ適用されます)以下の連結: 参照エンティティまたは埋め込み可能クラスの参照関連プロパティまたはフィールドの名前。"_" ; " キー "。

        デフォルト:
        ""
      • referencedColumnName

        StringSE referencedColumnName
        (オプション)この外部キー列によって参照される列の名前。参照される列は、ターゲットエンティティのテーブルにあります。

        デフォルト(単一の結合列が使用されている場合にのみ適用されます)参照されるテーブルの主キー列と同じ名前

        デフォルト:
        ""
      • unique

        boolean unique
        (オプション)プロパティが一意のキーであるかどうか。これは、テーブルレベルでの UniqueConstraint アノテーションのショートカットであり、一意キー制約が単一のフィールドのみである場合に役立ちます。
        デフォルト:
        false
      • nullable

        boolean nullable
        (オプション)外部キー列が NULL 可能かどうか。
        デフォルト:
        false
      • insertable

        boolean insertable
        (オプション)永続プロバイダーによって生成された SQL INSERT ステートメントに列が含まれるかどうか。
        デフォルト:
        true
      • updatable

        boolean updatable
        (オプション)永続プロバイダーによって生成された SQL UPDATE ステートメントに列が含まれるかどうか。
        デフォルト:
        true
      • 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)