Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

7.2.3. インデックス付きのコレクション

set と bag を除く全てのコレクションマッピングには、コレクションテーブルの中に インデックス用のカラム が必要です。そのカラムに、配列や List のインデックス、もしくは Map のキーをマッピングします。 Map のインデックスは、 <map-key> によりマッピングされた基本型か、 <map-key-many-to-many> によりマッピングされたエンティティの関連か、あるいは <composite-map-key> によりマッピングされたコンポジット型になります。配列かリストのインデックスは、常に integer 型で、 <list-index> 要素によりマッピングします。マッピングされたカラムにはシーケンシャルな整数を格納します。デフォルトでは0から番号が付けられます。
<list-index 
        column="column_name"                 1
        base="0|1|..."/>
2

1

column_name (必須): コレクションインデックスの値を保持するカラム名。

1

base (オプション - デフォルトでは0): リスト もしくはアレイの最初の要素に対応するインデックス カラムの値
<map-key 
        column="column_name"                 1
        formula="any SQL expression"         2
        type="type_name"                     3
        node="@attribute-name"
        length="N"/>

1

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

2

formula (オプション):マップのキーを評価する際に利用する SQL 式。

3

type (必須): マップキーの型
<map-key-many-to-many
        column="column_name"                 1
        formula="any SQL expression"         23
        class="ClassName"
/>

1

column (オプション): コレクションインデックスの値に対する外部キーカラム名

2

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

3

class (必須): マップキーとして利用するエンティティクラス。
テーブルにインデックスのカラムがないにも拘らずプロパティ型としてListを利用したい場合、Hibernate <bag>としてこのプロパティをマッピングすることができます。データベースへ渡され永続化された場合、bag はその順序を保持しますが、データベースからリトリーブした場合はオプションで分類および順序付けをすることができます。