createViewLinkBetweenViewObjects
メソッドを使用して、関連付けに使用するビュー属性をフレームワークに指定することで、ビュー・リンクを作成します。このメソッドでは、ビュー・リンク・アクセッサの作成およびカスタムAssociation句の指定もできます。
設計時に、DeptVO
やEmpVO
などのビュー・オブジェクトを定義できますが、Associationまたはビュー・リンクの定義はできません。
実行時、createViewLinkBetweenViewObjects
を使用し、DeptVO
とEmpVO
の属性を関連付けることで、ビュー・リンクを作成できます。たとえば、DeptVO
とEmpVO
の両方に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
コールにより、voEmp
をvoDept
のディテールとするビュー・リンクが作成されます。voEmp
ビュー・オブジェクトは、voDept
の現在の部門の従業員を表します。
createViewLinkBetweenViewObjects
メソッドでは、アクセッサ名を指定できます。アクセッサは、名前を使用してgetAttribute
をコールし、ディテールを取得します。前述のコード例では、アクセッサは、Employees
(2番目のパラメータ)と指定されています。Employees
に対してgetAttribute
をコールすると、現在の部門の従業員を反復するイテレータが返されます。
たとえば、最初の部門の従業員を反復するイテレータを返す、次のようなコードを記述できます。
Row row = voDept.first(); // get the first dept
RowIterator iter = (RowIterator) row.getAttribute("Employees");
アクセッサが、コードで不要な場合は、accessorName パラメータをnull
に設定します。
createViewLinkBetweenViewObjects
メソッドでは、ビジネス・コンポーネント・ランタイムで生成されるAssociation句を置き換える、カスタムAssociation句を指定できます。null
を渡すと、メソッドでは、ランタイムで生成された、関連元属性と関連先属性を関連付けるAssociation句を使用します。たとえば、前述のコードSnippetではassocClause にnull
が指定されているため、ランタイムは、PL/SQLのAssociation句WHERE voDept.DeptNum=voEmp.DeptNum
に相当するものを使用します。
コードでのビュー・リンク・インスタンスの作成方法
ビュー・リンク定義からのビュー・リンクの作成
Associationからのビュー・リンクの作成