パス式
パス式は、識別変数の後にナビゲーション演算子 ( . ) とコンテナー管理パーシスタンス (CMP) または関係名を続けたものです。
cmr フィールドへ導くパス式は、その cmr フィールドが一価である場合、 さらにナビゲートすることができます。 パス式が多値の関係へ導く場合は、そのパス式は終端となり、さらにナビゲートすることはできません。 パス式によって、型が値オブジェクトで ある CMP フィールドへ導かれる場合は、 その値オブジェクトの属性へナビゲートすることが可能です。
例: 値オブジェクト
SELECT object(e) FROM EmpBean e
WHERE e.address.distance('San Jose') < 10 and e.address.zip = 95037
値属性を検索しようとする場合は、 コンポーザー・パターンを使用して値オブジェクト属性を関連する列へマップすることが最良の方法です。 値オブジェクトをシリアライズ・フォーマットで保管する場合は、 各値オブジェクトをデータベースから検索してデシリアライズする必要があります。 値オブジェクト・メソッドは、動的照会でのみ実行可能です。
パス式は、Bean メソッドへのナビゲートも可能です。 メソッドは、リモートまたはローカルのどちらかの Bean インターフェースで定義されている必要があります。 メソッドは、動的照会でのみ使用可能です。 単一の照会ステートメント内でリモート・メソッドとローカル・メソッドを混合することはできません。
照会にリモート・メソッドが含まれている場合は、 その動的照会は、照会リモート・インターフェースを使用して実行されなければなりません。 照会リモート・インターフェースの使用により、照会サービスは Bean を活動化し、リモート Bean インターフェースのインスタンスを作成します。
同様に、ローカル Bean メソッドのある照会ステートメントは、 照会ローカル・インターフェースで実行されなければなりません。 これにより、照会サービスは Bean とローカル・インターフェース・インスタンスを活動化します。
ゲット・メソッドを使用して、Bean の CMP および cmr フィールドに アクセスしないでください。
メソッドに多重定義がある場合、 その多重定義のメソッドには異なる数のパラメーターがなければなりません。
メソッドには、非 void の戻りの型とメソッド引数がなければならず、 戻りの型は、プリミティブ型の byte、short、int、long、float、double、 boolean、char か、または下記のリストにあるラッパー型のどちらかでなければなりません。
Byte、Short、Integer、Long、Float、Double、BigDecimal、String、Boolean、 Character、java.util.Calendar、java.sql.Date、java.sql.Time、java.sql.Timestamp、 java.util.Date
メソッドへのいずれかの入力引数が NULL の場合は、 そのメソッドは、ヌル値を戻すと想定されて、呼び出されません。
集合価のパス式は、FROM 文節内でコレクション・メンバー宣言として使用することができ、 WHERE 文節内で IS EMPTY、MEMBER OF、および EXISTS 述部とともに使用することができます。
ステートメントの FROM 節の使用法 | ステートメントの妥当性 |
---|---|
|
OK |
|
無効 -- emps が多値のためナビゲートできない |
|
OK |
|
OK |