この章では、EISの1対多マッピングを使用するために構成する必要のある様々なコンポーネントについて説明します。
この章の内容は次のとおりです。
複数のマッピング・タイプに共通のTopLinkマッピング・オプションを構成する方法の詳細は、第121章「マッピングの構成」を参照してください。
TopLinkマッピングの作成方法の詳細は、第120章「マッピングの作成」を参照してください。
表84-1は、EISの1対多マッピングの構成可能オプションを示します。
表84-1 EISの1対多マッピングの構成可能オプション
構成オプション | Oracle JDeveloper |
TopLink Workbench |
Java |
---|---|---|---|
参照ディスクリプタ(78.3項「参照ディスクリプタの構成」を参照) |
![]() |
![]() |
![]() |
外部キー・ペア(84.2項「外部キー・ペアの構成」を参照) |
![]() |
![]() |
![]() |
双方向リレーションシップ(121.18項「双方向リレーションシップの構成」を参照) |
![]() |
![]() |
![]() |
マッピング・レベルでのメソッドまたは直接フィールド・アクセス(121.6項「マッピング・レベルでのメソッドまたは直接フィールド・アクセスの構成」を参照) |
![]() |
![]() |
![]() |
読取り専用マッピング(121.2項「読取り専用マッピングの構成」を参照) |
![]() |
![]() |
![]() |
プライベート・リレーションシップまたは独立したリレーションシップ(121.7項「プライベート・リレーションシップまたは独立したリレーションシップの構成」を参照) |
![]() |
![]() |
![]() |
インダイレクション(遅延ロード)(121.3項「インダイレクション(遅延ロード)の構成」を参照) |
![]() |
![]() |
![]() |
コンテナ・ポリシー(121.14項「コンテナ・ポリシーの構成」を参照) |
![]() |
![]() |
![]() |
マッピング・コメント(121.8項「マッピング・コメントの構成」を参照) |
![]() |
![]() |
![]() |
選択インタラクション(78.4項「選択インタラクションの構成」を参照) |
![]() |
![]() |
![]() |
すべて削除インタラクション(84.3項「すべて削除インタラクションの構成」を参照) |
![]() |
![]() |
![]() |
詳細は、次を参照してください。
1対多のEISマッピングでは、ソースおよびターゲット・オブジェクトのフィールドを1つ以上指定して、ターゲット・オブジェクトの属性にソース・オブジェクトの属性を関連付けます。
XMLレコードを使用するソースにキーのある状態の1対多のEISマッピング(77.8.1項「ソースにキーのある状態でのEIS 1対多マッピング」を参照)では、TopLinkで単純な値としてターゲットのXMLフィールドの値をソース・オブジェクトのレコードに置きます。デフォルトではこのような値はグループ化されません(例84-1を参照)。
例84-1 グループ化のないソース・オブジェクトXMLレコード
<employee> <name>Jane</name> <project-id>3</project-id> <project-id>4</project-id> </employee>
ソースおよびターゲットXMLフィールドのペアを複数指定した場合は、グループ化要素を指定する必要があります(例84-2を参照)。
例84-2 グループ化のあるソース・オブジェクトXMLレコード
<employee> <name>Jane</name> <project> <project-id>3</project-id> <project-name>Project 3</project-name> </project> <project> <project-id>4</project-id> <project-name>Project 4</project-name> </project> </employee>
XMLレコードを使用する、ターゲットにキーのある状態の1対1のEISマッピング(77.8.2項「ターゲットにキーのある状態でのEIS 1対多マッピング」を参照)では、TopLinkで選択インタラクションのソースXMLフィールドの値を使用してターゲット・オブジェクトの該当するインスタンスを取得します。
1対多のEISマッピング用にソースおよびターゲットXMLフィールドのペアを指定するには、次の手順を実行します。
ナビゲータで1対1のEISマッピングを選択します。そのプロパティがエディタに表示されます。
「一般」タブをクリックします。「一般」タブが表示されます。
次の情報を参照し、「一般」タブの「外部キー」フィールドを完成させます。
フィールド | 説明 |
---|---|
ターゲットにある外部キー | ターゲットにキーのある状態で1対多EISマッピングを作成するかどうかを選択します(77.8.2項「ターゲットにキーのある状態でのEIS 1対多マッピング」を参照)。 |
ソースにある外部キー | ソースにキーのある状態で1対多EISマッピングを作成するかどうかを選択します(77.8.1項「ソースにキーのある状態でのEIS 1対多マッピング」を参照)。 |
グループ化要素 | 外部キー・ペアがソース・オブジェクトのEISレコードでグループ化される要素を指定します。
ソースおよびターゲットXMLフィールドのペアを1つのみ指定した場合、これはオプションです。 ソースおよびターゲットXMLフィールドのペアを複数指定した場合、これは必須です。 |
フィールド・ペア | 「追加」をクリックして、ソースおよびターゲットXMLフィールドの1ペアを追加します。
「フィールド・ペアの指定」ダイアログ・ボックスを開きます。「参照」をクリックして、「ソースXPath」および「ターゲットXPath」フィールドの外部キーを追加します。 |
TopLinkの問合せおよび式フレームワークでは、すべての問合せの削除をサポートします。JCAアダプタがEISのすべて削除ファンクションにアクセスできる場合は、すべて削除インタラクションを構成してTopLinkですべての問合せを削除できるようにします。
EISの1対多マッピングについて、「すべて削除インタラクション」を指定するには、次の手順を実行します。
ナビゲータでマップされた属性を選択します。そのプロパティがエディタに表示されます。
「すべて削除インタラクション」タブをクリックします。「すべて削除インタラクション」タブが表示されます。
次の情報を参照し、「すべて削除インタラクション」タブの各フィールドにデータを入力します。
フィールド | 説明 |
---|---|
ファンクション名 | このタイプのコール(「オブジェクトの読取り」または「すべて読取り」)がEISに対して起動するEISファンクションの名前。 |
入力レコード名 | 入力レコードの作成時に、JCAアダプタに渡される名前。 |
入力ルート要素名 | 入力DOMに使用されるルート要素名。 |
入力引数 | 引数レコードのインタラクション・フィールドまたはXPathノードにマップされる問合せ引数名。
たとえば、XMLレコードを使用している場合、このオプションを使用して入力引数 |
出力引数 | ディスクリプタのマッピングに使用されるレコード内の正しいノードにマップされる、結果のレコード・フィールドまたはXPathノード。
たとえば、XMLレコードを使用している場合、このオプションを使用して出力 対話でディスクリプタのマッピングと一致するXML結果が返される場合、出力引数は必要ありません。 |
入力結果のパス | EISインタラクションが、XMLレコードにネストされるインタラクション引数を予期する場合に、このオプションを使用します。
たとえば、引数を最初にルート要素 |
出力結果のパス | このタイプのコール(「オブジェクトの読取り」または「すべて読取り」)がEISに対して起動するEISファンクションの名前。 |
プロパティ | EISプラットフォームが必要とするプロパティ。たとえば、プロパティ名operation (AQPlatform.QUEUE_OPERATION から)およびプロパティ値enqueue (AQPlatform.ENQUEUE から)。 |