MENU

J2EE環境構築編

J2EE体験編

J2EE体験編
CMPその3 他の条件で検索したい

ここまでで、データベースの一覧表示と追加の機能が盛りこまれました。
また、ソースを眺めてみると、primary keyで検索する、という機能もあるようです(findByPrimaryKey())。
しかし、それ以外の検索手段、例えば、性別、年齢、住所(今回の例ではデータベースに性別も年齢も住所もありませんが)等によって検索できなければ名簿の管理に使いにくいです。

finderメソッドの追加

またまたタグを追加します。追加する場所はimport文とclass宣言の間のxdoclet-definitionの中です。

@ejb.finder 
query="SELECT OBJECT(b) FROM user a where MOD(b.id,2)=1"  
signature="java.util.Collection findOdd()"

FROMの次の「user」がEJB作成ウィザードで入力したSchema名(一番上に入力したもの)です。
b.idの「id」はデータベースのコラム名ではなく、フィールド名(fieldという項目に入力したもの)です。
MODは割算の余りを求めるものです。ここでは「id」を2で割った余りが1ならば、という条件を指定しています。
signatureはTest1Home.javaにおけるメソッド名を定義します。分かりやすい名称をつけましょう。
queryの中身はEJB-QLという言語(?)です。通常のsqlと似ています。ちょっと探したのですが、網羅的なリファレンスは見付けられませんでした。

チェック

デフォルトの設定ではかなり詳細なログを残すので、ときどき眺めてみましょう。といっても、かなり詳細なログなので、眺めるだけでも大変です。
きちんと動作しないときはデバッガを使うことになるでしょうが、その前にログを見てみると意外に早くトラブルを解決できるかも知れません。