EJBでは、@NamedQueriesアノテーション構文を使用して、名前付き問合せを追加します。
-
すべてのタブを閉じ、「Model」プロジェクトを開きます。
-
「Employees.java」クラスをダブルクリックして、ソース・エディタで開きます。
-
ソース・エディタで「Entity」ノードを開き、@NamedQueriesアノテーション内の@NamedQuery文を表示します。
-
NamedQuery文の閉じ括弧の後にカンマを追加し、[Enter]を押して新しい行を追加します。
-
パラメータ値よりも高い給与の従業員のデータを取得する問合せをクラスに追加します。以下のコードを追加します。
@NamedQuery(name = "Employees.findBySal", query = "select o from Employees o where o.salary > :p_sal")コードは次のようになります。
@NamedQueries( {
@NamedQuery(name = "Employees.findAll", query = "select o from Employees o") ,
@NamedQuery(name = "Employees.findBySal", query = "select o from Employees o where o.salary > :p_sal")
})
必要に応じて、[Alt]キーと[Enter]キーを押して、javax.persistence.NamedQueriesライブラリをインポートします。 -
「Build」アイコンをクリックしてプロジェクトをコンパイルし、エラーが返されていないことを確認します。
-
アプリケーション・ナビゲータで「HRFacadeBean.java」を右クリックし、コンテキスト・メニューから「Edit Session Facade」を選択します。
-
Specify Session Facade Optionsで、先ほど作成した新規問合せ「getEmployeesFindBySal()」を選択します。
「OK」をクリックします。Save All「
」アイコンをクリックして作業内容を保存します。 -
アプリケーション・ナビゲータで「HRFacadeBean.java」を右クリックし、コンテキスト・メニューから「Create Data Control」を選択します。
-
Choose EJB Interfaceダイアログでデフォルト選択(local)のままにし、「OK」をクリックします。
-
Data Control Registryで、「HRFacadeLocal」ノードを展開します。先ほど作成した新規メソッドを開き、「Employees」ノードをクリックします。EJB JPA定義に該当する属性が作成されていることを確認します。
-
これで、新規メソッドをページ内のデータ・コントロールとして使用する準備が整いました。
-
Save All「
」アイコンをクリックして作業内容を保存します。
詳細表示
詳細表示
詳細表示 ADFタスク・フローは、Fusion Web Applicationにコントロール・フローを定義するためのモジュール・アプローチを提供します。
-
「Model」プロジェクトを閉じます。「ViewController」プロジェクトを右クリックして、コンテキスト・メニューから「New」を選択します。
-
New Galleryで、「Web Tier」→「JSF/Facelets」カテゴリを選択し、「ADF Task Flow」項目を選択します。「OK」をクリックします。
-
Create Task FlowダイアログにfindBySalFlow.xmlと入力します。ページ断片を使用してバウンド・タスク・フローを作成します。「OK」をクリックします。
-
「View」コンポーネントをタスク・フローへドラッグ・アンド・ドロップします。
-
2つ目の「View」コンポーネントをタスク・フローへドラッグ・アンド・ドロップします。
-
「Control Flow Case」コンポーネントを選択し、「view1」をクリックして「view2」にドロップします。このフローの名前をfindに変更します。
-
この操作を繰り返し、view2からview1へ、2番目のControl Flow Caseを作成し、backという名前に変更します。
-
「view1」をダブルクリックして、ページを作成します。Create ADF Page Fragmentで、このページのファイル・タイプがjsffになっていることを確認します。
「OK」をクリックします。
ページ断片は、別のJSFページ内にコンテンツとしてレンダリングされるJSFドキュメントです。
詳細表示 -
「Data Controls」ペインを開き、「getEmployeesfindBySal()」メソッドをページにドロップし、「Parameter」→「ADF Parameter Form」を選択します。
-
Edit Form FieldsでDisplay LabelフィールドにSalary >と入力し、「OK」をクリックしてその他のデフォルト値を受け入れます。パラメータp_salに注目します。
-
「getEmployeesFindBySal 」ボタンを選択し、Property InspectorでActionプロパティのリストから「find」を選択し、TextにFindと入力します。
-
コンポーネント・パレットのOperationsライブラリで、「Set Action Listener」を選択し、「Find」ボタンにドロップします。

ここでは、Set Action Listenerを使用して、pageFlowScopeレベルでView1に入力されたパラメータ値を保持します。
-
Insert Set Action Listenerダイアログで、Fromフィールドの隣の下矢印をクリックし、「Expression Builder」を選択します。
-
Expression Builderで、「ADF Bindings」→「bindings」→「getEmployessFindBySal_p_sal」を選択します。
「OK」をクリックします。
-
Insert Set Action Listenerダイアログに戻り、Toフィールドに#{pageFlowScope.sal}と入力します。
「OK」をクリックします。
-
StructureペインとProperty Inspectorは次のように表示されます。
-
「findBySalFlow.xml」タブをクリックして、タスク・フロー・ダイアグラムを再表示します。タスク・フロー・ダイアグラムで、「view2」をダブルクリックしてページを作成します。
-
Create ADF Page fragmentで、デフォルト値を受け入れます。
「OK」をクリックします。
-
Data Controlsペインで「getEmployeesFindBySal() 」メソッドを開き、「Employees」をページ上にドラッグ・アンド・ドロップします。コンテキスト・メニューから「Tables」→「ADF Read-only Table」を選択します。
-
Edit Table Columnsダイアログで、「Single Row」、「Enable Sorting」、「Enable Filtering」を選択します。salaryの後にある列をすべて削除し、hiredateも削除します。
「OK」をクリックします。
-
Edit Action Bindingダイアログで、Valueフィールドに#{pageFlowScope.sal}と入力します。
「OK」をクリックします。
-
Component Paletteの「ADF Faces」→「General Controls」ライブラリから「Button」コンポーネントを選択し、Structureペインのaf:tableノード上にドロップします。
-
Property Inspectorで、TextにBackと入力し、Actionとして「back」を選択します。
-
Save All「
」アイコンをクリックして作業内容を保存します。
詳細表示ADFリージョンを使用すると、JSFページまたはページ断片(.jsff)にバウンド・タスク・フローをレンダリングすることができます。
-
アプリケーション・ナビゲータで「mainHR.jsf」ノードをクリックし、mainHR.jsfページを再表示します。
-
「Graph」タブを右クリックし、「Insert After Show Detail Item」→「Show Detail Item」を選択します。
-
Property Inspectorで、TextフィールドをSearchに変更します。
-
アプリケーション・ナビゲータで、「Web Content」→「WEB-INF」ノードを開き、「findBySalFlow.xml」ノードをSearchペインにドラッグ・アンド・ドロップします。
-
コンテキスト・メニューから「Create」→「Region」を選択します。
-
ページ・リージョンは次のように表示されます。
Save All「
」アイコンをクリックして作業内容を保存します。
詳細表示
-
ページ内で右クリックし、コンテキスト・メニューから「Run」を選択します。
-
ブラウザ・ウィンドウで、「Search」タブをクリックします。
-
getEmployeesFindBySal_p_salフィールドに値(例:8000)を入力し、「Find」ボタンをクリックします。
-
該当する従業員のリストが表示されます。右方向にスクロールして、給与が8,000以下のレコードが返されていないことを確認します。
-
「Back」ボタンをクリックします。
-
getEmployeesFindBySal_p_salフィールドに新しい値(例:10000)を入力し、「Find」ボタンをクリックします。
-
今回は、さらに限定されたリストが表示されます。
-
ブラウザ・ウィンドウを閉じます。
すべて表示 | すべて非表示
パート1:EJBダイアグラマを使用したEJB 3.0によるデータ・モデルの構築