パッケージ jakarta.persistence

アノテーション型 CollectionTable


  • @TargetSE({METHODSE,FIELDSE})
    @RetentionSE(RUNTIMESE)
    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  // use default table (PERSON_NICKNAMES)
           @Column(name="name", length=50)
           protected Set<String> nickNames = new HashSet();
           ...
        }
    
        @Entity public class WealthyPerson extends Person {
           @ElementCollection
           @CollectionTable(name="HOMES") // use default join column name
           @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();
           ...
        }
     
    導入:
    2.0
    関連事項:
    ElementCollection, AttributeOverride, AssociationOverride, Column
    • オプション要素のサマリー

      オプション要素  
      修飾子と型 オプションの要素 説明
      StringSEcatalog
      (オプション)テーブルのカタログ。
      ForeignKeyforeignKey
      (オプション)テーブル生成が有効な場合に、joinColumns 要素に対応する列の外部キー制約の生成を指定または制御するために使用されます。
      Index[]indexes
      (オプション)テーブルのインデックス。
      JoinColumn[]joinColumns
      (オプション)エンティティのプライマリテーブルを参照するコレクションテーブルの外部キー列。
      StringSEname
      (オプション)収集テーブルの名前。
      StringSEschema
      (オプション)テーブルのスキーマ。
      UniqueConstraint[]uniqueConstraints
      (オプション)テーブルに配置される一意の制約。
    • 要素の詳細

      • name

        StringSE name
        (オプション)収集テーブルの名前。指定しない場合、デフォルトで、含まれているエンティティの名前とコレクション属性の名前が連結され、アンダースコアで区切られます。
        デフォルト:
        ""
      • catalog

        StringSE catalog
        (オプション)テーブルのカタログ。指定しない場合、デフォルトのカタログが使用されます。
        デフォルト:
        ""
      • schema

        StringSE schema
        (オプション)テーブルのスキーマ。指定しない場合、ユーザーのデフォルトのスキーマが使用されます。
        デフォルト:
        ""
      • joinColumns

        JoinColumn[] joinColumns
        (オプション)エンティティのプライマリテーブルを参照するコレクションテーブルの外部キー列。デフォルトは、単一の結合列が使用されている場合にのみ適用されます。デフォルトは JoinColumn と同じです(つまり、次の連結: エンティティの名前 ; "_" ; 参照される主キー列の名前)ただし、複数の結合列がある場合、JoinColumn  JoinColumns アノテーションを使用して、各結合列にアノテーションを指定する必要があります。この場合、name 要素と referencedColumnName 要素の両方を、そのような各 JoinColumn アノテーションで指定する必要があります。
        デフォルト:
        {}
      • foreignKey

        ForeignKey foreignKey
        (オプション)テーブル生成が有効な場合に、joinColumns 要素に対応する列の外部キー制約の生成を指定または制御するために使用されます。この要素といずれかの joinColumns 要素の foreignKey 要素の両方が指定されている場合、動作は未定義です。どちらの場所でも外部キーアノテーション要素が指定されていない場合は、永続性プロバイダーのデフォルトの外部キー戦略が適用されます。
        導入:
        2.1
        デフォルト:
        @jakarta.persistence.ForeignKey(jakarta.persistence.ConstraintMode.PROVIDER_DEFAULT)
      • uniqueConstraints

        UniqueConstraint[] uniqueConstraints
        (オプション)テーブルに配置される一意の制約。これらは、テーブル生成が有効な場合にのみ使用されます。
        デフォルト:
        {}
      • indexes

        Index[] indexes
        (オプション)テーブルのインデックス。これらは、テーブル生成が有効な場合にのみ使用されます。
        導入:
        2.1
        デフォルト:
        {}