7.2.4. 値のコレクションと多対多関連


値のコレクションや多対多関連は、外部キーカラムと、 コレクション要素のカラム と、場合によってはインデックスカラムを伴う、 専用の コレクションテーブル が必要です。
値のコレクションについては、 <element> タグを使用します。
<element
        column="column_name"                      
        formula="any SQL expression"              
        type="typename"                           
        length="L"
        precision="P"
        scale="S"
        not-null="true|false"
        unique="true|false"
        node="element-name"
/>

1

column (オプション): コレクション要素の値を保持するカラム名。

2

formula (オプション): 要素を評価する際に利用するSQL 式。

3

type (必須): コレクション要素の型。
多対多関連 は、<many-to-many> 要素を利用して指定します。
<many-to-many
        column="column_name"                                
        formula="any SQL expression"                        
        class="ClassName"                                   
        fetch="select|join"                                 
        unique="true|false"                                 
        not-found="ignore|exception"                        
        entity-name="EntityName"                            
        property-ref="propertyNameFromAssociatedClass"      
        node="element-name"
        embed-xml="true|false"
    />

1

column (オプション): 外部キーカラムの要素名。

2

formula (オプション): 外部キー値の要素を評価する際に利用する SQL 式。

3

class(必須): 関連クラスの名前。

4

fetch (オプション - デフォルトでは join): この関連にたいする外部結合もしくは順次選択フェッチを有効にします。 以下は特別なケースです;あるエンティティの単数SELECTにおける完全即時フェッチ、そして他のエンティティとの多対多関係については、 コレクション自体のみにだけでなく、<many-to-many> にネストした要素にある属性についてもjoinフェッチを有効にします。

5

unique (オプション): 外部キーカラムに対し、一意制約のDDL生成を 有効にします。関連の多重度を効果的に一対多に変更します。

6

not-found (オプション - デフォルトは exception): 参照先の行がない外部キーをどのように処理するか指定します:ignore は、行がないことを関連がないものとして扱います。

7

entity-name (オプション):class の代わりとなる、 関連クラスのエンティティ名。

8

property-ref (オプション): 外部キーに結合された、 関連クラスのプロパティ名。指定されていない場合は、関連クラスの主キーを使用します。
以下にいくつかの例を挙げています。
文字列セット:
<set name="names" table="person_names">
    <key column="person_id"/>
    <element column="person_name" type="string"/>
</set>
order-by 属性が決定した反復順序となっている整数を含むbag
<bag name="sizes" 
        table="item_sizes" 
        order-by="size asc">
    <key column="item_id"/>
    <element column="size" type="integer"/>
</bag>
エンティティの配列、この場合多対多の関連です。
<array name="addresses" 
        table="PersonAddress" 
        cascade="persist">
    <key column="personId"/>
    <list-index column="sortOrder"/>
    <many-to-many column="addressId" class="Address"/>
</array>
文字列と日付の map
<map name="holidays" 
        table="holidays" 
        schema="dbo" 
        order-by="hol_name asc">
    <key column="id"/>
    <map-key column="hol_name" type="string"/>
    <element column="hol_date" type="date"/>
</map>
コンポーネントのリスト(次の章で説明します)
<list name="carComponents" 
        table="CarComponents">
    <key column="carId"/>
    <list-index column="sortOrder"/>
    <composite-element class="CarComponent">
        <property name="price"/>
        <property name="type"/>
        <property name="serialNumber" column="serialNum"/>
    </composite-element>
</list>
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る