概要
この記事では、複数エンティティの情報を取得する方法を紹介します。
ついこの前まで、エンティティとレコードの関係がいまいち分からず苦戦したので、使い方を整理しました。
エンティティとは
OutSystemsでデータを格納できるテーブルのこと。
通常のシステム開発では、データを保管する場合、データベースとその中のテーブル作成が必要になる。
OutSystemsでは、エンティティという格納場所を作成することでデータの保存が可能になる。
「Service Studioから操作できるDBのテーブル」と考えれば分かりやすい。
単一エンティティのデータを取得する
単一のエンティティであれば、素直にアグリゲートを使用してデータを取得できる。
アグリゲート以降のフローで、Bookエンティティの取得結果(GetBooks.List)を操作できる。
アグリゲートを使用し、Recordの形でデータを取得する
複数エンティティのデータを取得する際の標準的な取得の方法。
アグリゲートの中で複数エンティティをデータソースとすることで、複数エンティティの情報を取得できる。
なお、取得したデータ型は「Book, BookDetail Record List」となる。
レコードのリスト...となるとややイメージしにくいので、少し解説。
「Book, BookDetail Record List」は「Book, BookDetail Record」のリスト
「Book, BookDetail Record」は、「Book型とBookDetail型を持つレコード」の意味
SQLを使用し、Recordの形でデータを取得する
複数エンティティのデータをSQLで取得する方法。
エンティティをテーブルとみなし、エンティティ名に{}を付けて記載する。
{エンティティ}.*と記載することで、エンティティの項目をすべて指定できる。
この場合も、取得したデータ型は「Book, BookDetail Record List」となる。
SQLを使用し、ストラクチャの形でデータを取得する
同じく、複数エンティティのデータをSQLで取得する方法。
ただし、取得データを任意のストラクチャとする。
SQLの「Output Entities/Structure」に取得したいデータのストラクチャを指定する。
また、SELECTの項目とストラクチャの項目をしっかり合わせる必要がある。
取得データ型は、「BookAndBookDetail List」となる。
ユーザ向けの画面項目や、外部インターフェース向けの、必要な項目が決っている場合に便利。
ただ、「ストラクチャに項目を追加した場合、SQLの修正(SELECT項目の追加)が必要になる」という保守的な欠点があります。