EJB メディエーター照会構文
本製品が提供する Enterprise JavaBeans (EJB) データ・メディエーター・サービス (DMS) を利用してアプリケーションの作成を開始する場合は、以下の項目を考慮してください。
- EJB DMS は入力引数として複合 EJB 照会をとります。これは、EJB 照会言語 (QL) ステートメントおよびオプションの XREL コマンドを含む配列で構成されます。XREL コマンドは EJB 関係のリストであり、配列の最後に表示される必要があります。
- 各 EJB QL 照会は Service DataObjects (SDO) インスタンスの形式でデータを戻します。 すべての SDO インスタンスは DataGraph にマージされます。各照会の SELECT 文節は、コンテナー管理パーシスタンス (CMP) フィールドまたは式を指定して、SDO に戻します。WHERE 文節はフィルター条件を指定し、これによってユーザーは ORDER BY 文節を定義できます。2 つ以上の SELECT が同じ SDO タイプを戻す場合、各 SELECT は同じ CMP フィールドおよび式を射影する必要があります。 アップデートを可能にするためには、EJB の 1 次キー・フィールドを射影する必要があります。JOIN、 UNION、および集計は副照会を除きサポートされません。
- 配列内の照会は、前回の照会および関係名で定義した ID 変数により、FROM 文節内の前の照会を参照できます。 この関係は一価にすることも、集合価にすることもできます。
- 関係は、FROM 文節または XREL コマンドのいずれかで使用される際に、グラフ内のデータ・オブジェクト・インスタンス間で作成されます。
- 集合価の入力引数は FROM 文節でサポートされています。?1 が Dept EJBs の集合を参照する場合は、次の照会がメディエーターに対して有効です。
collection エレメントのタイプを照会コンパイラーに伝えるには、キャスト構文が必要です。
select d.deptno from (Dept) ?1 as d
- EJB コンテナーまたはパーシスタンス・マネージャー・データ・キャッシュでキャッシュされる EJB から DataGraph を作成したい場合には、集合入力引数が役立ちます。
- SELECT 文節は、検索を行う CMP フィールドのリスト (ワイルドカード
* 表記が、すべての CMP フィールドを検索するために使用されます) または有効な EJB 照会言語式を指定します。
CMP フィールドおよび式は、以下のいずれかのタイプでなければなりません。
- プリミティブ型: boolean、byte、short、integer、long、float、double、char
- プリミティブ型用のオブジェクト・ラッパー型
- Java™.lang.String
- Java.math.BigDecimal
- java.math.BigInteger
- byte [ ]
- Java.sql.Date
- java.sql.Time
- java.sql.Timestamp
- java.util.Date
- java.util.Calendar
- すべての 1 次キー CMP フィールドは、サービス・データ・オブジェクト (SDO) がアップデート可能になるように検索しなければなりません。 そうしないと、applyChanges が例外を戻します。
- e.salary + e.bonus AS TOTAL_PAY のような EJB 照会言語式から来る SDO 属性は、アップデートできません。 アップデートを試みると、applyChanges が QueryException を戻します。
- SUM(e.salary) のような集約式は、たとえそれが EJB 照会言語の一部であるとしても許可されません。 集約式は、WHERE 文節の副選択内で使用されます。