Oracle® Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発 12c (12.2.1.3.0) E90376-03 |
|
前 |
次 |
この章の内容は次のとおりです。
ADFビュー・オブジェクトから単一または複数のビュー・オブジェクトへのリンクを作成し、マスタ/ディテール階層を作成できます。
マスター/ディテール関係は、2つのビュー・オブジェクト・インスタンスを関連付けるビュー・リンクが作成されたときに確立されます。ビュー・リンクは2つのビュー・オブジェクト間の関係を表します。通常は基礎となるデータ表間の外部キー関係に基づきますが、そうである必要はありません。ビュー・リンクは、1つのビュー・オブジェクト・インスタンス(マスター・オブジェクト)の行を別のビュー・オブジェクト・インスタンス(ディテール・オブジェクト)の1つ以上の行に関連付けます。
この章では、図6-1に示すようなビュー・オブジェクトの概念についてわかりやすく説明します。
ビュー・オブジェクトを1つ以上の他のビュー・オブジェクトにリンクして、任意の複雑さのマスター/ディテール階層を作成できます。
実行時にマスター・ビュー・インスタンスの現在行に合せてディテール・ビュー・インスタンスが能動的に調整されるように、アプリケーション・モジュールのコンテキスト内で親子のビュー・オブジェクト・インスタンスを調整できます。
設計時にビュー・リンク・アクセッサを定義できます。ビュー・リンク・アクセッサは、実行時にディテール・コレクション行セットを返すためにマスター・コレクションで使用されるアクセッサ属性を指定します。
マスター/ディテール関係のマスター・ビュー・オブジェクトに指定するビュー・リンク・アクセッサ属性を使用して、プログラムでディテール・コレクション行セットにアクセスできます。
ディテール・ビュー・インスタンスの行セットをキャッシュしてマスター/ディテール・コレクションの問合せを調整すると、ADF Facesツリー・コンポーネントのような、ツリー内の各マスター・ノードが個別にディテール行セットを保持する必要があるUIコンポーネントをサポートできます。
ビュー基準を使用して行検索条件を作成し、マスター・ビュー・オブジェクト内の特定の行を見つけることができます。
リンク元とリンク先のビュー・リンク属性が単一の表から導出されるように自己参照型のマスター/ディテール階層を定義できます。
インライン・ビュー基準を定義して、ディテール・ビュー・オブジェクトの属性で指定された属性値を使用してマスター・ビュー・オブジェクトの行セットをフィルタリングできます。
ビュー・オブジェクトで作業を開始する前に、その他のOracle ADF機能を理解しておくと役に立つ場合があります。次に、関連する他の機能へのリンクを示します。
対話型のOracle ADFモデル・テスターを使用して、ビュー・オブジェクトの問合せ結果を検証する方法の詳細は、「ビュー・インスタンスの問合せのテスト」を参照してください。
ビュー・オブジェクト・インスタンスで構成されるデータ・モデルを作成する方法の詳細は、「アプリケーション・モジュールによるビジネス・サービスの実装」を参照してください。
通常、カスタム・ビュー・オブジェクト・クラスで記述、使用およびオーバーライドする一般的なコードのクイック・リファレンスは、「ADFビジネス・コンポーネントのよく使用されるメソッド」を参照してください。
oracle.jbo
パッケージに関連するAPIのドキュメントについては、次のJavadocリファレンス・ドキュメントを参照してください。
Oracle ADFモデルJava APIリファレンス
JDeveloperを使用すると、外部キーによって関連付けられた複数の表が含まれる問合せが多数ある場合に、ソースおよびターゲットのビュー・オブジェクトをマスター/ディテール階層で作成できます。
使用する問合せは、その多くが外部キーによって関連付けられた複数の表を対象としています。このシナリオでは、関連情報を問い合せる別個のビュー・オブジェクトを作成し、ソース・ビュー・オブジェクトを1つ以上のターゲット・ビュー・オブジェクトにリンクして、マスター/ディテール階層を形成します。
この状況に対処する方法は2つあります。次のいずれかを実行できます。
ソース・ビュー・オブジェクトとターゲット・ビュー・オブジェクトが、基礎となるエンティティ・オブジェクトのアソシエーションに基づいている場合は、そのエンティティ・オブジェクト間のアソシエーションに基づいてビュー・リンクを作成します。
ソース・ビュー・オブジェクトとターゲット・ビュー・オブジェクトの関連付けを定義するビュー・リンクを作成します。
アソシエーションの有無は、エンティティ・オブジェクトがいつ作成されたかによって決まります。デフォルトでは、エンティティ・オブジェクト・アソシエーションは、データ・ソースの階層関係をモデル化しています。たとえば、外部キーで関連付けられたデータベース表に基づくエンティティ・オブジェクトは、このような関係をエンティティ・アソシエーションで取り込みます。ビュー・リンクが既存のエンティティ・アソシエーションに基づいている場合、ビュー・リンクをビュー・オブジェクトにのみ基づいて定義しても、パフォーマンス的に不利になることはありません。どちらの場合も、「ビュー・リンクの作成」ウィザードでマスター/ディテールの関係を定義します。
注意:
1つのビュー・リンクにより、2つのビュー・オブジェクト間の基本的なマスター/ディテール関係が定義されます。ただし、より多くのビュー・リンクを作成することにより、次のものを含む複雑なマスター/ディテール階層を構成できます。
マルチレベルのマスター/ディテール/ディテール
複数の(ピア)ディテールがあるマスター
複数のマスターがあるディテール
このような複雑な階層を定義する手順は、ビュー・オブジェクトのみに基づいて関係を作成する場合も、エンティティ・アソシエーションを持つビュー・オブジェクトに基づいて関係を作成する場合も同じです。どちらの場合も、追加の各階層を、一度に1ビュー・リンクずつ作成する必要があります。
図6-2は、リンクされたマスター/ディテール問合せにより生成されたマルチレベルの結果を示しています。
ユーザーにマスター行のセットを表示し、マスター行ごとに調整されたディテール行のセットを表示する必要がある場合、ビュー・リンクを作成して、マスター・ビュー・オブジェクトとディテール・ビュー・オブジェクトをどのように関連付けるかを定義できます。たとえば、部門のマスター/ディテール階層および各部門に定義された従業員セットを作成する場合は、DeptVO
ビュー・オブジェクトとEmpVO
ビュー・オブジェクトをリンクさせます。このようなビュー・オブジェクトが既存のアソシエーションによって関連付けられたエンティティを基礎としている場合は、そのアソシエーションを選択してマスター/ディテール・ビュー・リンクを定義できます。
アソシエーション・ベースのビュー・リンクを作成するには、「ビュー・リンクの作成」ウィザードを使用します。
始める前に:
マスター/ディテール階層を作成する方法に関する知識があると役立ちます。詳細は、「マスター/ディテール階層における複数表の使用」を参照してください。
エンティティ・アソシエーションの作成方法を理解しておくと役に立つ場合があります。詳細は、「既存の表からのエンティティ・オブジェクトおよびアソシエーション作成時の処理」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
アソシエーション・ベースのビュー・リンクの作成方法:
アソシエーションに基づくビュー・リンクの場合と同様に、ビュー・オブジェクトを他のビュー・オブジェクトに直接リンクし、任意の複雑さでマスター/ディテール階層を形成できます。唯一異なるのは、マスター・ビュー・オブジェクトとディテール・ビュー・オブジェクトのどちらも既存のアソシエーションによって関連付けられていない場合の作成手順です。この場合、これらのオブジェクトを関連付ける一連のソース属性と関連先属性のペアを取得するためのアソシエーションがないため、ベースとなるビュー・オブジェクト属性を示してビュー・リンクを作成します。
ビュー・リンクを作成するには、「ビュー・リンクの作成」ウィザードを使用します。
始める前に:
マスター/ディテール階層を作成する方法に関する知識があると役立ちます。詳細は、「マスター/ディテール階層における複数表の使用」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
ビュー・オブジェクト間のビュー・リンクを作成するには:
ビュー・リンク、またはアソシエーションベースのビュー・リンクを作成する場合、JDeveloperでその宣言的設定を表すXMLドキュメントが作成され、そのパッケージの名前に対応するディレクトリ内に保存されます。たとえば、DeptToEmpFkLink
という名前のビュー・リンクが作成され、views.links
パッケージに表示された場合、プロジェクトのソース・パスに作成されるXMLファイルは、./views/links/DeptToEmpFkLink.xml
になります。このXMLファイルには、指定したソース属性とリンク先属性のペアに関する宣言情報が含まれ、ビュー・リンクがアソシエーションベースの場合は、指定したソース・ビュー・オブジェクトとリンク先ビュー・オブジェクトを関連付けるアソシエーションに関する宣言情報が含まれます。
ビュー・リンク・コンポーネント定義自体を保存するのみでなく、JDeveloperはビュー・リンク関係でのリンク元ビュー・オブジェクトのXML定義を更新して、定義したビュー・リンク・アクセッサに関する情報を追加します。これを確認するため、「アプリケーション」ウィンドウでソース・ビュー・オブジェクトを選択し、「構造」ウィンドウでその詳細を検証できます。図6-6に示すように、DeptVO
ソース・ビュー・オブジェクトのViewLink Accessorsノードの下には、リンク先のEmpVO
ビュー・オブジェクトにアクセスするデフォルトのリンク先アクセッサEmpVOAccessor
があります。これにより、ソース・ビュー・オブジェクトはビュー・リンク・アクセッサを使用して、ビュー・リンクのリンク先側を横断できます。ソース・ビュー・オブジェクトのビュー・リンク・アクセッサ定義に加えて、ビュー・リンクを直接カスタマイズすることにより、リンク先ビュー・オブジェクトにビュー・リンク・アクセッサを定義できます。
図6-6 「構造」ウィンドウにビュー・リンク・アクセッサが表示されるビュー・オブジェクト
「エンティティ・アソシエーションに基づくマスター/ディテール階層の作成方法」で説明したように、ビュー・リンクを定義して、相関ディテールの行セットにプログラムで移動できるようにする場合、ビュー・リンクは、コードから要求された際、調整されたディテール行セットの取得に必要な情報を定義するのみという受動的な役割を担います。ビュー・リンク・アクセッサ属性が存在し、ビュー・リンクのソース・ビュー・オブジェクトの任意のインスタンスから任意の結果行でプログラムによるアクセスが可能です。つまり、プログラムによるアクセスでは、アプリケーション・モジュールのデータ・モデルを変更する必要はありません。
ただし、マスター/ディテール・ユーザー・インタフェースは、エンタープライズ・アプリケーション内で頻繁に発生するため、マスター/ディテール画面をプログラムで調整する必要性をなくすために、ビュー・リンクをより能動的に使用することもできます。ビュー・リンクされたビュー・オブジェクトのインスタンスをアプリケーション・モジュールのデータ・モデルに 明示的に追加することにより、この能動的なマスター/ディテール調整を実行できます。
マスター/ディテールの調整を有効にするには、概要エディタでアプリケーション・モジュールを開き、「データ・モデル」ページを選択します。
始める前に:
マスター/ディテール階層を作成する方法に関する知識があると役立ちます。詳細は、「マスター/ディテール階層における複数表の使用」を参照してください。
アプリケーション・モジュールの役割を理解しておくと役に立つ場合があります。詳細は、「アプリケーション・モジュールについて」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
「エンティティ・ベースのビュー・オブジェクトの作成方法」および「カスタムSQLモード・ビュー・オブジェクトの作成方法」の説明に従って、目的のビュー・オブジェクトを作成します。
「アプリケーション・モジュールの作成方法」の説明に従って、アプリケーション・モジュールを作成します。
ビュー・オブジェクトのディテール・インスタンスを追加する方法:
図6-8 ビュー・リンクされたビュー・オブジェクトによるデータ・モデル
マスター/ディテールのアクティブな調整をテストするには、「アプリケーション」ウィンドウのポップアップ・メニューから「実行」を選択して、アプリケーション・モジュール上でOracle ADFモデル・テスターを起動します。Oracle ADFモデル・テスターのデータ・モデル・ツリーには、マスター・ビュー・オブジェクト・インスタンスでディテール・ビュー・オブジェクト・インスタンスをアクティブに調整するビュー・リンク・インスタンスが表示されます。ツリーでビュー・リンク・インスタンス・ノードをダブルクリックすると、Oracle ADFモデル・テスターのマスター/ディテール・データ・ビュー・ページが開きます。ツールバー・ボタンを使用してマスター・ビュー・オブジェクト内で移動する(結果としてビュー・オブジェクトの現在行を変更する)場合に、調整されたディテールのセットが自動的にリフレッシュされ、ユーザー・インタフェースは同期を維持します。
マスターまたはディテールとして定義されていない別のビュー・オブジェクトをダブルクリックすると、2番目のタブが開き、そのデータが表示されます。この場合、そのビュー・オブジェクトに対してはビュー・リンクによるアクティブな調整が行われないため、その問合せはマスター・ビュー・オブジェクトの現在行による制約を受けません。
データ・モデルを編集してOracle ADFモデル・テスターを実行する方法の詳細は、「Oracle ADFモデル・テスターを使用したビュー・オブジェクト・インスタンスのテスト」を参照してください。
ビュー・リンクを効果的に使用するためには、ビュー・リンク・アクセッサ属性によりRowSet
オブジェクトが戻されることや、ディテール・コレクションへのビュー・リンク・アクセッサでのプログラムによるアクセスが可能になることを理解しておく必要があります。
実行時に、Row
オブジェクトにあるgetAttribute()
メソッドにより、ビュー・オブジェクトの名前別の結果セットで行の属性にアクセスできます。ビュー・リンク・アクセッサは、ソース・ビュー・オブジェクトの現在行の追加属性のような動作をするため、同じgetAttribute()
メソッドを使用してその値を取得できます。通常のビュー属性とビュー・リンク・アクセッサ属性との実際の相違点は、そのデータ型のみです。通常のビュー属性は、一般に303
やngreenbe
のような値を持つスカラー・データ型であるのに対し、ビュー・リンク・アクセッサ属性の値はゼロまたは1つ以上の相関ディテール行の行セットです。curUser
がOrders
ビュー・オブジェクトのいくつかのインスタンスからのRow
オブジェクトであると仮定すると、注文項目のディテール行セットを取得するための、次のコードを1行作成することができます。
RowSet items = (RowSet)curUser.getAttribute("OrderItems");
注意:
ビュー行のカスタムJavaクラスを生成する場合、ビュー・リンク・アクセッサのタイプはRowIterator
になります。実行時に、戻り値が必ずRowSet
オブジェクトになるため、ビュー・リンク属性値をRowSet
にキャストするのが安全です。
次の例に示すように、ビュー・リンク・アクセッサを使用してディテール行のRowSet
オブジェクトを取得すると、ビュー・オブジェクトの結果の行セットをループする場合と同じように、それが含まれる行全体をループできます。
while (items.hasNext()) { Row curItem = items.next(); System.out.println("--> (" + curItem.getAttribute("LineItemId") + ") " + curItem.getAttribute("LineItemTotal")); }
テスト・クライアントの作成の詳細は、「ビュー・リンク・アクセッサを使用したディテール・コレクションのアクセス方法」を参照してください。
新しいディテール行セット作成の問合せの再実行に関連する若干のオーバーヘッドがアプリケーションで発生しないようにする場合は、ビュー・リンク・アクセッサ行セットのキャッシュを有効にできます。たとえば、マスター行ビュー・アクセッサ属性が変更されないかぎり、ビュー・アクセッサ行セットは安定した状態を維持し、ADF Facesツリー・コンポーネントのようなUIコンポーネントの行セットを再作成する必要がありませんが、ツリー内の各マスター・ノードのデータは、個別のディテール行のセットを維持する必要があります。
ビュー・リンク・アクセッサのソースであるビュー・オブジェクトについて、概要エディタを使用してビュー・リンク・アクセッサ行セットの保存を有効にできます。ソース・ビュー・オブジェクトの概要エディタの「ビュー・アクセッサ」ページで、「行セットの保存」フラグを選択します。
パフォーマンスのヒント:
ユーザー・インタフェース開発者がビュー・リンクを使用して、ディテール・コレクションが安定しているデータバインド型マスター・ディテール・コンポーネント(ADF Facesツリー・コンポーネントなど)を作成することが予想される場合は、「行セットの保存」フラグを有効にしてください。実行時に、この設定によってディテール・コレクションごとにアクセッサが1回実行されます。パフォーマンスにおけるこの改善の代償としては、フラグを有効にせずにディテール・コレクションにアクセスすることに比べて、アクセスされるコレクションではより多くのメモリー領域を占有する場合があります。
ビュー・リンク・アクセッサ行セットの保存を有効にするには:
ビュー・オブジェクトは、次の2種類のスタイルのマスター/ディテール調整をサポートします。
データ・モデルのマスター/ディテール調整のためのビュー・リンク・インスタンス。「アクティブなマスター/ディテール調整による動的ディテール行セットの有効化」を参照してください。
ディテール行セットにオン・デマンドでプログラム的にアクセスするためのビュー・リンク・アクセッサ属性。「ビュー・リンク・アクセッサ属性を使用したディテール行セットへのプログラムによるアクセス」を参照してください。
「実行時に行われる処理: ビュー・リンク・アクセッサを使用したプログラムによるアクセスを組み合せるタイミング」の説明に従って、両方のスタイルを結合できます。
ビュー・リンク・インスタンスをアプリケーション・モジュールのデータ・モデルに追加するときは、2つの特定のビュー・オブジェクト・インスタンスを接続します。ビュー・リンク・インスタンスの使用は、2つの間にアクティブなマスター/ディテール調整が必要なことを示します。実行時には、データ・モデル内のビュー・リンク・インスタンスにより、このコーディネーションを有効にするイベント処理が容易になります。マスター・ビュー・オブジェクト・インスタンスで現在行が変更されるたびに、イベントが発生し、マスター・ビュー・オブジェクトの新しい現在行に対する新しいバインド・パラメータのセットでexecuteQuery()
が自動的に呼び出されることで、ディテール・ビュー・オブジェクトがリフレッシュされます。
このデータ・モデル・マスター/ディテールの重要な特徴は、マスターおよびディテール・ビュー・オブジェクト・インスタンスが、クライアントのユーザー・インタフェースがバインディングを確立できる固定のオブジェクトであることです。マスターで現在行が変化すると、新しいディテール・ビュー・オブジェクト・インスタンスが生成されるのではなく、既存のディテール・ビュー・オブジェクト・インスタンスが、マスターの新しい現在行に関連する行のセットを含むように、デフォルトの行セットを更新します。さらに、ユーザー・インタフェースのバインディング・オブジェクトはイベントを受け取り、ディテール・ビュー・オブジェクトのリフレッシュされた行セットを含むように表示を更新できます。
データ・モデル階層のみが備えるもう1つの重要な機能は、1つのディテール・ビュー・オブジェクト・インスタンスが複数のマスター・ビュー・オブジェクト・インスタンスを持つことができることです。たとえば、PaymentOptions
ビュー・オブジェクト・インスタンスは、Customers
ビュー・オブジェクト・インスタンスとOrders
ビュー・オブジェクト・インスタンスの両方のディテールになることができます。Customers
またはOrders
のビュー・オブジェクト・インスタンスの現在行が変わるたびに、ディテールPaymentOptions
ビュー・オブジェクト・インスタンスのデフォルトの行セットは、現在の顧客および現在のオーダーの支払情報の行を含むようにリフレッシュされます。複数のマスターがあるディテール・ビュー・オブジェクト・インスタンスを設定する方法の詳細は、「複数のマスターがあるマスター/ディテール階層を作成する方法」を参照してください。
ビュー・リンクによりビュー・オブジェクト行に関係するディテール行セットにプログラムでアクセスする必要がある場合は、ビュー・リンク・アクセッサ属性を使用できます。ビュー・リンク・アクセッサ属性のファインダ名は、ビュー・リンクの概要エディタから指定します。「関連」ページの「アクセッサ」セクションにある「編集」アイコンをクリックし、「ビュー・リンク・プロパティの編集」ダイアログでビュー・リンク・アクセッサ属性の名前を編集します。
次の例は、<Attr>
要素の_findername
値を定義するビュー・リンクのXMLを示しています。
<ViewLinkDefEnd Name="Orders" Cardinality="1" Owner="devguide.advanced.multiplemasters.Orders" Source="true"> <AttrArray Name="Attributes"> <Item Value="devguide.advanced.multiplemasters.Orders.PaymentOptionId"/> </AttrArray> <DesignTime> <Attr Name="_minCardinality" Value="1"/> <Attr Name="_isUpdateable" Value="true"/> <Attr Name="_finderName" Value="Orders"/> </DesignTime> </ViewLinkDefEnd>
アクセッサ属性の名前がAccessorAttrName
であるとすると、次のような汎用getAttribute()
APIを使用してディテール行セットにアクセスできます。
RowSet detail = (RowSet)currentRow.getAttribute("AccessorAttrName");
マスター・ビュー・オブジェクトに対するカスタム・ビュー行クラスを生成し、クライアント・ビュー行インタフェースでビュー・リンク・アクセッサ属性に対するgetterメソッドを公開してある場合は、次のような強く型付けされたコードを使用してディテール行セットにアクセスできます。
RowSet detail = (RowSet)currentRow.getAccessorAttrName();
データ・モデル・マスター/ディテールとは異なり、ビュー・リンク・アクセッサ属性のプログラムによるアクセスでは、アプリケーション・モジュールのデータ・モデルにディテール・ビュー・オブジェクト・インスタンスは必要ありません。ビュー・リンク・アクセッサ属性を呼び出すたびに、呼出しを行ったマスター行に関連するディテール行のセットを含むRowSet
が返されます。
ビュー・リンク・アクセッサ属性を使用すると、ディテール・データ行は不変になります。マスター行のビュー・リンク定義に関係する属性値が変わらないかぎり、ディテール・データ行は変化しません。マスターの現在行が変化しても、特定のマスター行にアタッチされているディテール行セットは影響を受けません。このため、ビュー・リンク・アクセッサ属性は、ディテール行の汎用的なプログラム・アクセスに便利なだけでなく、ツリー・コントロールのようなUIオブジェクトにも適しています。ツリー・コントロールでは、ツリー内の各マスター・ノードのデータは、個別のディテール行のセットを維持する必要があります。
Oracle ADFは、データ・モデル・マスター/ディテールとビュー・リンク・アクセッサの行セットを区別する必要があります。データ・モデル・マスター/ディテールと、ビュー・リンク・アクセッサを使用するディテール行セットのプログラムによるアクセスを組み合せるときは、これらが個別のメカニズムであることを理解することが重要です。たとえば、次のことを行うものとします。
PersonsVO
およびOrdersVO
ビュー・オブジェクトを定義します。
これらの間のビュー・リンクを定義し、ビュー・リンク・アクセッサにPersonsToOrders
という名前を付けます。
これらのインスタンスを、ビュー・リンク・インスタンスによってアクティブに調整されるmaster
(PersonsVO
型)およびdetail
(OrdersVO
型)という名前の、アプリケーション・モジュールのデータ・モデルに追加します。
master
ビュー・オブジェクトのインスタンスで人物を検索すると、detail
ビュー・オブジェクトのインスタンスが更新され、予測どおりに対応する順序が表示されます。この時点で、現在のPersonsVO
行のPersonsToOrders
ビュー・リンク・アクセッサ属性にプログラムでアクセスするカスタム・メソッドを呼び出すと、OrdersVO
行のセットを含むRowSet
が取得されます。一般には、プログラムでアクセスされたこのRowSet
はデータ・モデルのdetail
ビュー・オブジェクト・インスタンスに由来するものと考えられますが、そうではありません。
ビュー・リンク・アクセッサによって返されるRowSet
は、常に内部的に作成されたビュー・オブジェクト・インスタンスからのものであり、ユーザーがデータ・モデルに追加したものではありません。この内部的なビュー・オブジェクト・インスタンスは、必要に応じて作成され、システムが定義する名前でルート・アプリケーション・モジュールに追加されます。
内部的に作成される個別のビュー・オブジェクト・インスタンスが使用される最大の理由は、データ・モデル内のビュー・オブジェクト・インスタンスに対して開発者が行う変更によって、インスタンスが影響を受けないようにするためです。たとえば、ビュー行が、ビュー・リンク・アクセッサのRowSet
に対してデータ・モデル内のディテール・ビュー・オブジェクトを使用する場合、開発者が次のようなことを動的に行うと、結果の行セットが誤って影響を受ける可能性があります。
新しい名前付きバインド・パラメータを含むWHERE
句を追加する。
このようなビュー・オブジェクト・インスタンスがビュー・リンク・アクセッサの結果に使用されると、動的に追加されたWHERE
句のバインド・パラメータ値はビュー・リンク・アクセッサのRowSet
に提供されていないため、予想外の結果またはエラーが発生します。このような値が提供されるのは、データ・モデル内のディテール・ビュー・オブジェクト・インスタンスのデフォルト行セットのみです。
データ・モデルのディテール・ビュー・オブジェクト・インスタンスにマスター・ビュー・オブジェクト・インスタンスを追加する。
このシナリオでは、アクセッサのセマンティクスが変更されます。アクセッサが現在のPersonsVO
行に対するOrdersVO
行を返すかわりに、たとえば現在ログインしている顧客によって作成された現在のPersonsVO
に対するOrdersVO
行のみを突然返し始めます。
ディテール・ビュー・オブジェクト・インスタンスまたはそれを含むアプリケーション・モジュール・インスタンスを削除する。
このシナリオでは、プログラムでアクセスされたディテールRowSet
のすべての行が無効になります。
さらに、Oracle ADFは、特定の操作について、データ・モデル・マスター/ディテールとビュー・リンク・アクセッサの行セットを区別する必要があります。たとえば、ディテール・ビュー・オブジェクトで新しい行を作成すると、フレームワークは、ビュー・リンクに含まれる属性に、マスターの対応する値を自動的に移入します。データ・モデル・マスター/ディテールの場合は、このような値を、データ・モデルの場合によっては複数のマスター・ビュー・オブジェクト・インスタンスの現在行から取得します。ビュー・リンク・アクセッサによって返されるRowSet
に新しい行を作成する場合は、アクセッサが呼び出されたマスター行からの値を移入します。
役に立つ場合には、同じディテール・ビュー・オブジェクトのインスタンスに対して複数のマスター・ビュー・オブジェクトのインスタンスが存在するように、データ・モデルを設定できます。Customers
、Orders
、およびPaymentOptions
という名前のビュー・オブジェクトと、次のように定義されたビュー・リンクについて考えます。
Customers
とPaymentOptions
Orders
とPaymentOptions
図6-9は、Customers
とOrders
の両方のビュー・オブジェクト・インスタンスが、同じPaymentOptions
ビュー・オブジェクト・インスタンスのマスターになるように構成した場合の、データ・モデル・パネルの表示を示しています。
図6-9のようなデータ・モデルを設定するには、アプリケーション・モジュールの概要エディタで、「データ・モデル」ページを使用します。
始める前に:
ビュー・オブジェクトに関する知識が役立つ場合があります。詳細は、「ビュー・オブジェクトについて」を参照してください。
複数のマスター・ビュー・オブジェクトを持つビュー・インスタンスを作成するには:
エンティティ・ベースのビュー・オブジェクトをリンクしてマスター/ディテール階層を形成すると通常、ビュー・オブジェクトとこれらの各慣用名がアソシエーションによって関連付けられます。実行時に、アソシエーションにより内部アソシエーション・ビュー・オブジェクトが作成され、これによって問合せの実行が有効になり、マスター/ディテール調整が有効にされます。アソシエーションに参加するエンティティ・オブジェクトが非永続属性のみで構成される場合は、このシナリオに例外が発生します。実行時にプログラムで移入する一時属性でエンティティ・オブジェクトを定義すると、これが発生する場合があります。この場合、非永続エンティティ・オブジェクトにリンクするアソシエーション概要エディタを使用して、アソシエーション・ビュー・オブジェクトを選択し、問合せを実行できます。
始める前に:
アソシエーションの知識があると役立ちます。詳細は、「既存の表からのエンティティ・オブジェクトおよびアソシエーション作成時の処理」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
「エンティティ・ベースのビュー・オブジェクトの作成方法」の説明に従って、非永続エンティティ・オブジェクト用にエンティティ・ベースのビュー・オブジェクトを作成します。
「アソシエーションの作成」ウィザードを使用して、非永続エンティティ・オブジェクトとデータベース派生エンティティ・オブジェクトとの間におけるアソシエーションを作成します。アソシエーションの作成の詳細は、「アソシエーションの作成と構成」を参照してください。
非永続エンティティ・オブジェクトのアソシエーションをカスタマイズするには:
行検索は、ビュー基準を使用して行セットの中の特定の行を見つけるためにアプリケーションで使用されるオブジェクトです。マスター行セットに対して行検索を起動して、ディテール行セットにより提供された1つ以上の一致する基準属性を特定できます。
現在は、実行時に行キー以外の属性の参照が必要な場合に、次のマスター/ディテール・シナリオで、設計時に定義した行検索を参加させることができます。
ADFビジネス・コンポーネントWebサービスで行検索を公開する場合。エンド・ユーザーは、マスター・サービス・ビュー・インスタンスの特定の行(行検索にマップされた、ディテール・サービス・ビュー・インスタンスの1つ以上の属性値に一致する)に対して行更新を開始できます。このユースケースの詳細は、「ビュー基準と行検索の使用方法に関する必知事項」を参照してください。
行検索にマップされた、ディテール・ビュー・インスタンスの1つ以上の非キー属性値に一致するマスター・ビューの行セットを、アプリケーションでプログラムにより取得する場合。このユースケースの詳細は、「プログラムによる行検索の呼出し」を参照してください。
注意:
ビュー・オブジェクトで定義する行検索は、現在のところADFビジネス・コンポーネント・データ・コントロールのビュー・プロジェクト用にはサポートされていません。したがって、アプリケーションによって「データ・コントロール」パネルでコレクションとして公開されるビュー・オブジェクトの行検索マップ属性は、行検索の参照操作に関与しません。
ビュー基準により定義されるビュー基準属性は、必ずしも行のキー属性である必要はなく、ディテール・ビュー・オブジェクトで定義された任意の属性でかまいません。たとえば、PersonVO
がマスター・ビュー・オブジェクト、AddressVO
がディテール・ビュー・オブジェクトであるマスター/ディテール関係で、属性EmailAddress
により、AddressVO
の行セット内で個人の電子メール・アドレスが一致する個人行が特定されるとします。
ディテール・ビュー・オブジェクトから提供される基準属性を使用してマスター・ビュー・オブジェクトの行を特定する行検索を作成するには、次の手順を実行します。
マスター・ビュー・オブジェクトに、ディテール・ビュー・オブジェクトを参照するためのインライン・ビュー基準を定義し、バインド変数で定義されたビュー基準アイテムとして基準属性を指定します。
マスター・ビュー・オブジェクトに、各基準属性の値を受け取る更新可能な一時属性を定義します。実行時に、一時属性をプログラムで設定するかWebサービス・ペイロードで公開して、エンド・ユーザーが基準属性値(電子メール・アドレスなど)を入力できるようにすることができます。
ビュー基準を選択し、各基準属性のバインド変数をマスター・ビュー・オブジェクトの対応する一時属性に設定して、マスター・ビュー・オブジェクトに行検索を定義します。
マスター・ビュー・オブジェクトの行セットをフィルタリングするために定義する行検索は、全体がマスター・ビュー・オブジェクトで定義されます。行検索では、インライン・ビュー基準内に指定された基準属性と実行時に取得された値が照合されます。基準属性値を受け取るために、マスター・ビュー・オブジェクトでは一時属性を定義できます。この一時属性は、アプリケーションがビュー・オブジェクトに対して行検索メソッドを使用してプログラムで設定するか、Webサービス・ペイロードが公開して、ユーザーにより提供された値を受け取ることができます。
行検索を定義するには、マスター・ビュー・オブジェクトの概要エディタの「行検索」ページを使用します。エディタで、選択したビュー基準の各バインド変数の値のソースを定義します。ビュー・オブジェクトの属性と、属性と値の式は、どちらも行検索によって定義されたバインド変数のソースとして有効です。
図6-10の概要エディタには、ビュー基準findPersonByEmail
で指定されたビュー基準のバインド変数EmailBindVar
を、マスター・ビュー・オブジェクトPersonVO
によって定義された一時属性TrEmailAddress
(値のソース)にマップする行検索が表示されています。
注意:
また、「行検索の使用」で説明しているように、行検索はマスター/ディテール階層に参加していないビュー・オブジェクトに対しても定義できます。
始める前に:
マスター/ディテール・ビュー・オブジェクトの行検索に関する知識が役立つ場合があります。詳細は、「行検索を使用したマスター・ビュー・オブジェクトの行の検索方法」を参照してください。
マスター/ディテール・ビュー・オブジェクトに関する知識が役立つ場合があります。詳細は、「マスター/ディテール・ビュー・オブジェクトについて」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
「エンティティ・アソシエーションに基づくマスター/ディテール階層の作成方法」または「ビュー・オブジェクトのみに基づくマスター/ディテール階層の作成方法」の説明に従って、目的のマスター/ディテール・ビュー・オブジェクトを作成します。
「ビュー基準でのマスター/ディテール関連ビュー・オブジェクトの使用」の説明に従って、マスター・ビュー・オブジェクトに対してインライン・ビュー基準を定義します。インライン・ビュー基準は、ディテール・ビュー・オブジェクトを参照し、1つ以上のディテールの属性をビュー基準アイテムとして指定します。
オプションで、「ビュー・オブジェクトへの計算属性および一時属性の追加」の説明に従って、更新可能な一時属性をマスター・ビュー・オブジェクトに追加します。一時属性は、アプリケーションでプログラムにより設定するか、ADFビジネス・コンポーネントWebサービス・ペイロードで公開してエンド・ユーザーに値を要求できます。基準参照値を受け取るには、一時属性を更新可能として定義する必要があります。
マスター・ビュー・オブジェクトの行検索を作成する手順:
マスター・ビュー・オブジェクトの行検索を作成する場合は、行検索自体の定義も含めて、行検索で必要とされるすべてのメタデータをビュー・オブジェクト定義に含めます。次の例に示すように、行検索PersonByEmailFinder
のメタデータとして、ビュー・オブジェクト定義には、<Variable>
要素にバインド変数EmailBindVar
、<ViewAttribute>
要素に一時属性TrEmailAddress
、<ViewCriteria>
要素にビュー基準findPersonByEmail
およびインライン・ビュー基準AddressVONestedCriteria
があり、最後に<RowFinders>
要素に行検索PersonByEmailFinder
が含まれています。
行検索の<VarAttributeMapping>
サブ要素は、ビュー基準のバインド変数EmailBindVar
をマスター・ビュー・オブジェクトの一時属性TrEmailAddress
にマップしています。これにより、エンド・ユーザーが実行時に値を指定し、アプリケーションで必要な基準属性を使用して行検索を起動できるようになっています。インラインの<ViewCriteriaItem>
サブ要素は、ディテール・ビュー・オブジェクトの基準属性EmailAddress
を、バインド変数の値に設定しています。
実行時にマスター・ビュー・オブジェクトで行検索が起動されると、1つ以上のディテール基準属性により、マスター行セットから一致する行が特定されます。この例では、電子メール・アドレスを使用して、その電子メール・アドレスが属している個人が照合されています。行検索では、行のキー値を渡さなくても個人のレコードが特定されます。
<ViewObject xmlns="http://xmlns.oracle.com/bc4j" Name="PersonVO" SelectList="PersonEO.ID, PersonEO.FIRST_NAME PersonEO.LAST_NAME" FromList="PERSON PersonEO" ... <Variable Name="EmailBindVar" Kind="viewcriteria" Type="java.lang.String"/> <EntityUsage Name="PersonEO" Entity="model.entities.PersonEO"/> ... <ViewAttribute Name="TrEmailAddress" IsUpdateable="false" IsSelected="false" IsPersistent="false" PrecisionRule="true" Type="java.lang.String" ColumnType="CHAR" AliasName="VIEW_ATTR" SQLType="VARCHAR"/> <ViewCriteria Name="findPersonByEmail" ViewObjectName="model.views.PersonVO" Conjunction="AND"> ... <ViewCriteriaRow Name="PersonVOCriteria_row_0" UpperColumns="1"> <ViewCriteriaItem Name="PersonVOCriteria_PersonVOCriteria_row_0_AddressVO" ViewAttribute="AddressVO" Operator="EXISTS" Conjunction="AND" IsNestedCriteria="true" Required="Optional"> <ViewCriteria Name="AddressVONestedCriteria" ViewObjectName="model.views.AddressVO" Conjunction="AND"> <ViewCriteriaRow Name="AddressVONestedCriteria_row_0" UpperColumns="1"> <ViewCriteriaItem Name="AddressVONestedCriteria_row_0_EmailAddress" ViewAttribute="EmailAddress" Operator="=" Conjunction="AND" Value=":EmailBindVar" IsBindVarValue="true" Required="Optional"/> </ViewCriteriaRow> </ViewCriteria> </ViewCriteriaItem> </ViewCriteriaRow> </ViewCriteria> ... <RowFinders> <AttrValueRowFinder Name="PersonByEmailFinder" FetchLimit="1"> <ViewCriteriaUsage Name="findPersonByEmail" FullName="model.views.PersonVO.findPersonByEmail"/> <VarAttributeMap> <VariableAttributeMapping Variable="EmailBindVar" Attribute="TrEmailAddress"/> </VarAttributeMap> </AttrValueRowFinder> </RowFinders> </ViewObject>
JDeveloperでは、ソースおよびターゲットの属性が1つの表に存在する場合、単一のビュー・オブジェクトに基づいてマスター/ディテール階層を作成できます。
再帰的なデータ・モデルは、単一の表に基づくマスター/ディテール関係の関連元属性と関連先属性の名前を指定する単一の問合せを活用するものです。通常のマスター/ディテール関係では、関連元属性はマスター・ビュー・オブジェクトの主キー属性によって指定され、関連先属性はディテール・ビュー・オブジェクトの外部キー属性によって指定されます。たとえば、一般的なマスター/ディテール関係では、DEPARTMENT
表のDepartmentId
属性と、対応するEMPLOYEE
表のDepartmentId
属性が関連付けられます。しかし、再帰的モデルでは、関連元属性EmployeeId
と関連先属性ManagerId
がともにEMPLOYEE
表に存在します。したがって、この関係に対する問合せで使用するのは、単一のビュー・オブジェクトのみです。このシナリオでは、両方の属性を指定する単一のベース・エンティティ・オブジェクトのビュー・オブジェクトを作成してから、自己参照型のビュー・リンクを定義し、このビュー・オブジェクトを「関連元」ビュー・オブジェクトおよび「関連先」ビュー・オブジェクト両方として構成してマスター/ディテール階層を形成します。
ビュー・リンクを作成したら、2つの方法でデータ・モデル・プロジェクトの再帰的マスター/ディテール階層を操作できます。次のいずれかを実行できます。
同一のビュー・オブジェクトの2つのインスタンス(ビュー・リンク・インスタンスによって能動的に調整され、マスターとしての役割を果たすものと、ディテールとしての役割を果たすもの)を公開するデータ・モデルを作成します。これは、2つの別々の表で同時に単一レベルのマスター行とディテール行を表示する必要があるときに有益です。
ビュー・オブジェクトの単一のインスタンスのみを公開するデータ・モデルを作成し、各行のビュー・リンク・アクセッサ属性を使用してディテール行セットにアクセスします。再帰的マスター/ディテール階層のデータが存在する任意のレベルを表示(またはプログラム的に操作)できるため、2つのうち、この方法が一般的に使用されます。たとえば、tree
またはtreeTable
コンポーネントの再帰的階層を表示する場合は、「ツリーでのマスター/ディテール・オブジェクトの表示方法」で説明されているように、このアプローチを使用します。
再帰的マスター/ディテール階層では、ビュー・リンクで選択するリンク元およびリンク先のビュー・オブジェクトの属性は、通常、基礎となるエンティティ・オブジェクト間の自己参照型アソシエーションを定義する属性ペアと同じになります(このアソシエーションが存在する場合)。基礎をなすこのアソシエーションはビュー・リンクの作成には不要ですが、これによりビュー・リンクの作成が容易になるため、まず、ビュー・オブジェクトのベース・エンティティ・オブジェクトに対する外部キーを作成します。
再帰的マスター/ディテール階層を作成するには:
ビュー・オブジェクトのベース・エンティティ・オブジェクトを使用して、自己参照型ビュー・リンクを作成します。
階層の「ルート」に表示する行のみを含めるようにビュー・インスタンスの結果をフィルタリングするビュー基準を持ったビュー・オブジェクトを公開します。
アソシエーションを作成するには、「アソシエーションの作成」ウィザードを使用します。「ビュー・リンクの作成」ウィザードを使用するときに、このアソシエーションが選択肢として表示されます。関連元ビュー・オブジェクトと関連先ビュー・オブジェクトに対して選択するアソシエーションでは、単一のデータベース表から導出された同じエンティティ・オブジェクトの名前を指定するため、このビュー・リンクは自己参照型になります。
始める前に:
再帰的なデータ・モデルに関する知識が役立つ場合があります。詳細は、「再帰的なマスター/ディテール階層における単一表の使用」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
ビュー・リンクを作成する場合、エンティティ・オブジェクトの関連元属性と関連先属性間のアソシエーションは推測されません。再帰的階層をサポートするために、「アソシエーションの作成」ウィザードを使用して、関連元属性と関連先属性間のアソシエーションを作成できます。「エンティティ・オブジェクト」ページで、同一のエンティティ・オブジェクトを選択して関連元属性と関連先属性を指定し、ウィザードの他のすべてのデフォルト設定をそのままにします。アソシエーションの作成の詳細は、「アソシエーションの作成と構成」を参照してください。
たとえば、再帰的マスター/ディテール階層に、管理階層に基づく従業員のリストを表示するとします。このシナリオでは、Employees
エンティティ・オブジェクトに基づいてアソシエーションを作成します。「アソシエーションの作成」ウィザードの「エンティティ・オブジェクト」ページで、関連元属性としてEmployees.EmployeeId
を、関連先属性としてEmployee.ManagerId
を選択します。エンティティ・オブジェクトEmployees
によって両方の属性が指定されるため、このアソシエーションは自己参照型になります。
アソシエーション・ベースの自己参照型ビュー・リンクを作成する手順:
プロジェクトのデータ・モデルのビュー・オブジェクトを公開する準備ができたら、ビュー基準を使用してツリーのルートの最初の値をフィルタリングするように、データ・モデルのビュー・インスタンスを構成します。たとえば、再帰的マスター/ディテール階層に、管理階層に基づく従業員のリストを表示するとします。このシナリオでは、階層全体のルート値にする従業員の従業員IDを指定するように、ビュー基準のバインド変数を構成します。この場合、管理者と従業員の再帰的階層のルート値は、組織で最高レベルの管理者の従業員IDにします。
始める前に:
再帰的なデータ・モデルに関する知識が役立つ場合があります。詳細は、「再帰的なマスター/ディテール階層における単一表の使用」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。詳細は、「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
エンティティ・ベースのビュー・オブジェクトを作成し、階層の「ルート」に表示する行のみを含めるようにビュー・インスタンスの結果をフィルタリングするビュー基準を作成します。バインド変数を使用してビュー・オブジェクトをフィルタリングするビュー基準の作成の詳細は、「名前付きビュー基準の処理」を参照してください。
たとえば、管理者と従業員の再帰的階層で、エンティティ・ベースのビュー・オブジェクトEmployeesView
を作成します。「アソシエーションの作成」ウィザードでビュー・オブジェクトを作成したら、概要エディタの「問合せ」ページで、階層の最上部に表示する従業員を特定するバインド変数とビュー基準を作成します。階層のルートに表示する従業員を1人にする必要がある場合、このシナリオのビュー基準では、従業員ID(関連元属性に対応)のバインド変数を使用してフィルタリングすると、「ビュー基準の作成」ダイアログに表示されるWHERE
句は、((Employees.EMPLOYEE_ID = :TheEmployeeId ))
のようになります(TheEmployeeId
はバインド変数名)。バインド変数を使用してビュー・オブジェクトをフィルタリングするビュー基準作成の詳細は、「カスケード・リストを制御するデータソース・ビュー・オブジェクトの作成」を参照してください。
既存のアプリケーション・モジュールにビュー・オブジェクト・インスタンスを定義する手順:
自己参照型ビュー・リンクを作成する場合、JDeveloperでその宣言的設定を表すXMLドキュメント・ファイルが作成され、そのパッケージの名前に対応するディレクトリ内に保存されます。このXMLファイルには、選択したアソシエーションで指定した関連元属性と関連先属性のペアに関する宣言情報と、選択した関連元および関連先ビュー・オブジェクトを関連付けるアソシエーションに関する宣言情報が含まれます。
次の例では、EmpManagerFkLink
のXMLドキュメント・ファイルで、関連元と関連先に同じビュー・オブジェクトEmployeesView
を定義しています。
<ViewLink xmlns="http://xmlns.oracle.com/bc4j" Name="EmpManagerFkLink" EntityAssociation="test.model.EmpManagerFkAssoc"> <ViewLinkDefEnd Name="EmployeesView1" Cardinality="1" Owner="test.model.EmployeesView" Source="true"> <DesignTime> <Attr Name="_finderName" Value="ManagerIdEmployeesView"/> <Attr Name="_isUpdateable" Value="true"/> </DesignTime> <AttrArray Name="Attributes"> <Item Value="test.model.EmployeesView.EmployeeId"/> </AttrArray> </ViewLinkDefEnd> <ViewLinkDefEnd Name="EmployeesView2" Cardinality="-1" Owner="test.model.EmployeesView"> <DesignTime> <Attr Name="_finderName" Value="StaffList"/> <Attr Name="_isUpdateable" Value="true"/> </DesignTime> <AttrArray Name="Attributes"> <Item Value="test.model.EmployeesView.ManagerId"/> </AttrArray> </ViewLinkDefEnd> </ViewLink>
ビュー・リンク・コンポーネント定義自体が保存されるだけでなく、JDeveloperによりビュー・オブジェクトのXML定義も更新され、定義されたビュー・リンク・アクセッサに関する情報が追加されます。これを確認するため、「アプリケーション」ウィンドウでビュー・オブジェクトを選択し、「構造」ウィンドウでその詳細を検証できます。図6-15に示すように、EmpManagerFkLink
ビュー・リンクのEmployeesView
ビュー・オブジェクトに定義されたアクセッサは、「ビュー・リンク・アクセッサ」ノードに表示されています。
ADFビジネス・コンポーネントのフレームワークでは、ディテール・ビュー・オブジェクトの属性を使用してビュー基準フィルタをマスター・ビュー・オブジェクトに適用できます。
ビュー基準を使用すると、ビュー・オブジェクト自体の問合せに適用されるビュー・オブジェクト問合せフィルタを宣言的な方法で定義できます。ディテール・ビュー・オブジェクトの属性を使用してマスター・ビュー・オブジェクトをフィルタリングしなければならない場合があります。マスター・ビュー・オブジェクトとディテール・ビュー・オブジェクトが関係するビュー基準は、EXISTS
演算子と、問合せフィルタを定義するためのインライン・ビュー基準に依存しています。EXISTS
演算子により、インライン・ビュー基準はディテール・ビュー・オブジェクトを参照し、基準アイテムとして選択された属性を適用できます。たとえば、ビュー基準を行検索と組み合せて使用すると、マスター行セットをフィルタリングし、ディテール・ビュー・オブジェクトの基準アイテムを使用して行セットの特定の行を見つけることができます。
マスター・ビュー・オブジェクトにビュー基準を定義する場合は、そのビュー・オブジェクトの概要エディタの「ビュー基準」ページを使用します。たとえば、ディテールAddressVO
のEmailAddress
属性を使用してマスターPersonVO
の行をフィルタリングするビュー基準findPersonByEmail
は、次の例のようになります。この例では、ディテール・ビュー・オブジェクトAddressVO
の電子メール属性の値を実行時に取得するために、ビュー基準の文にバインド変数EmailBindVar
が使用されています。
( (EXISTS(SELECT 1 FROM ADDRESS AddressEONQ1 WHERE (UPPER(AddressEONQ1.EMAIL_ADDRESS LIKE UPPER (:EmailBindVar || '%') ) ) AND (PersonEO.PERSON_ID = AddressEONQ1.PERSON_ID) ) ) )
始める前に:
マスター・ビュー・オブジェクトに作用する行検索に関する知識が役立つ場合があります。「行検索を使用したマスター・ビュー・オブジェクトの行の検索方法」を参照してください。
ビュー基準に関する知識が役立つ場合があります。「名前付きビュー基準の処理」を参照してください。
他のOracle ADF機能を使用して追加できる機能を理解しておくことも役立ちます。「ビュー・オブジェクトの追加機能」を参照してください。
次のタスクを完了する必要があります。
インライン・ビュー基準を作成する手順: