ビュー属性の関連付けによるビュー・リンクの作成

createViewLinkBetweenViewObjectsメソッドを使用して、関連付けに使用するビュー属性をフレームワークに指定することで、ビュー・リンクを作成します。このメソッドでは、ビュー・リンク・アクセッサの作成およびカスタムAssociation句の指定もできます。

設計時に、DeptVOEmpVOなどのビュー・オブジェクトを定義できますが、Associationまたはビュー・リンクの定義はできません。

実行時、createViewLinkBetweenViewObjectsを使用し、DeptVOEmpVOの属性を関連付けることで、ビュー・リンクを作成できます。たとえば、DeptVOEmpVOの両方にDeptNum属性がある場合、次のコードを使用し、属性を関連付け、ビュー・リンクを作成できます。

  ViewObject voDept = myAM.createViewObject("MyDept", "package1.DeptVO");
  ViewObject voEmp = myAM.createViewObject("MyEmp", "package1.EmpVO");
  // Build an attribute array, consisting of DeptVO.DeptNum.
  AttributeDef[] deptAttrs = new AttributeDef[1];
  deptAttrs[0] = voDept.findAttributeDef("DeptNum");
  // Build an attribute array, consisting of EmpVO.DeptNum.
  AttributeDef[] empAttrs = new Attributedef[1];
  empAttrs[0] = voEmp.findAttributeDef("DeptNum");
  ViewLink vl = myAM.createViewLinkBetweenViewObjects("MyLink3",
  "Employees", // accessor name--more on this below
  voDept, // master
  deptAttrs,
  voEmp, // detail
  empAttrs,
null); // assoc clause

createViewLinkBetweenViewObjectsコールにより、voEmpvoDeptのディテールとするビュー・リンクが作成されます。voEmpビュー・オブジェクトは、voDeptの現在の部門の従業員を表します。

アクセッサ名の使用方法

createViewLinkBetweenViewObjectsメソッドでは、アクセッサ名を指定できます。アクセッサは、名前を使用してgetAttributeをコールし、ディテールを取得します。前述のコード例では、アクセッサは、Employees(2番目のパラメータ)と指定されています。Employeesに対してgetAttributeをコールすると、現在の部門の従業員を反復するイテレータが返されます。

たとえば、最初の部門の従業員を反復するイテレータを返す、次のようなコードを記述できます。

  Row row = voDept.first(); // get the first dept
 RowIterator iter = (RowIterator) row.getAttribute("Employees");

アクセッサが、コードで不要な場合は、accessorName パラメータをnullに設定します。

Association句の使用方法

createViewLinkBetweenViewObjectsメソッドでは、ビジネス・コンポーネント・ランタイムで生成されるAssociation句を置き換える、カスタムAssociation句を指定できます。nullを渡すと、メソッドでは、ランタイムで生成された、関連元属性と関連先属性を関連付けるAssociation句を使用します。たとえば、前述のコードSnippetではassocClausenullが指定されているため、ランタイムは、PL/SQLのAssociation句WHERE voDept.DeptNum=voEmp.DeptNumに相当するものを使用します。


関連項目

コードでのビュー・リンク・インスタンスの作成方法
ビュー・リンク定義からのビュー・リンクの作成
Associationからのビュー・リンクの作成