高度なカスタマイズ > サービスおよびインフラストラクチャのカスタマイズ > アドバンス照会機能 > SearchCondition > 結合サポート
  
結合サポート
照会結合を使用して、別々の表のデータを関連付けます。結合は PersistenceManager のナビゲーションメソッドを使用するか、またはアドホック WhereExpressions を介して実行できます。また、QuerySpec クラスでは、リンククラスおよび Rose モデルで定義された役割を使用した、照会への結合の追加を明示的にサポートします。これにより QuerySpec の柔軟性だけでなく、モデル情報を使用した照会結合の指定が簡単になります。以下の QuerySpec メソッドを使用できます。
appendJoin(int a_linkIndex, String a_role, Persistable a_source)
appendJoin(int a_linkIndex, String a_role, int a_targetIndex)
以下の例では、FolderMembership リンクを介して SubFolder および Part クラスをともに結合する照会を構築します。照会によってすべてのフォルダとフォルダにあるすべての関連部品が返されます。以下のコードで、照会の仕様を作成します。最初のセクションでは、クラスと返される属性を追加します。最後の 2 行のコードでは、FolderMembership リンククラスのモデル化された役割を使用してクラスを結合します。
QuerySpec query = new QuerySpec();
int folderIndex = query.appendClassList(wt.folder.SubFolder.class,
false);
int linkIndex = query.appendClassList(wt.folder.FolderMembership.class,
false);
int partIndex = query.appendClassList(wt.part.WTPart.class, false);
query.appendSelect(new ClassAttribute(wt.folder.SubFolder.class,
wt.folder.SubF
older.NAME),
new int[] { folderIndex } , false);
query.appendSelect(new ClassAttribute(wt.part.WTPart.class,
wt.part.WTPart.NAME),
new int[] { partIndex }, false);
query.appendJoin(linkIndex, wt.folder.FolderMembership.FOLDER_ROLE,
folderIndex);
query.appendJoin(linkIndex, wt.folder.FolderMembership.MEMBER_ROLE,
partIndex);