ストアドファンクションを呼び出すには、@Function
をDaoのメソッドに注釈します。
パラメータには、パラメータの種別を示す@In
、
@InOut
、
@Out
、
@ResultSet
のいずれかのアノテーションが必須です。
パラメータは複数指定できます。
戻り値は次のいずれかでなければいけません。
デフォルトではメソッド名がファンクション名になります。
@Function
のname
要素に値を指定した場合は、その値がファンクション名になります。
@Function
のcatalog
要素やschema
要素にカタログ名やスキーマ名を指定できます。
このときファンクションの名前はcatalog
要素、schema
要素、name
要素(指定されていなければメソッド名)をピリオドで連結したものになります。
戻り値の型がエンティティクラスやエンティティクラスを要素とするjava.util.List
の場合において、エンティティのプロパティすべてに対して漏れなく結果セットのカラムをマッピングすることを保証したい場合は、@Function
のensureResultMapping
要素にtrue
を指定します。
結果セットのカラムにマッピングされないプロパティが存在する場合org.seasar.doma.jdbc.ResultMappingException
がスローされます。
ストアドファンクションのパラメータとDaoメソッドのパラメータの並び順は合わせなければいけません。
INパラメータは、@In
をメソッドのパラメータに注釈して示します。
パラメータの型が基本型もしくはドメインクラスの場合、引数をnull
にできます。
それ以外の型の場合、引数はnull
であってはいけません。
次のように使用します。
INOUTパラメータは、@InOut
をメソッドのパラメータに注釈して示します。
注釈されるパラメータの型はorg.seasar.doma.jdbc.Reference
でなければいけません。
Reference
の型パラメータは基本型もしくはドメインクラスでなければいけません。
引数はnull
であってはいけません。
次のように使用します。
OUTパラメータは、@Out
をメソッドのパラメータに注釈して示します。
注釈されるパラメータの型はorg.seasar.doma.jdbc.Reference
でなければいけません。
Reference
の型パラメータは基本型もしくはドメインクラスでなければいけません。
引数はnull
であってはいけません。
メソッドの戻り値の型がvoid
以外の場合、戻り値はOUTパラメータとなります。
次のように使用します。
カーソルのOUTパラメータ、もしくはストアドファンクションが返す結果セットは、@ResultSet
をメソッドのパラメータに注釈して示します。
注釈されるパラメータの型は、基本型、ドメインクラス、
エンティティクラス、]]>
のいずれかを要素とするjava.util.List
でなければいけません。
引数はnull
であってはいけません。
次のように使用します。
検索結果を受ける型がエンティティクラスやエンティティクラスを要素とするjava.util.List
の場合において、エンティティのプロパティすべてに対して漏れなく結果セットのカラムをマッピングすることを保証したい場合は、@ResultSet
のensureResultMapping
要素にtrue
を指定します。
結果セットのカラムにマッピングされないプロパティが存在する場合org.seasar.doma.jdbc.ResultMappingException
がスローされます。
結果セットを]]>
にマッピングする場合、
@Function
のmapKeyNaming
要素にマップのキーのネーミング規約を指定できます。
MapKeyNamingType.CAMEL_CASE
は、カラム名をキャメルケースに変換することを示します。
そのほかに、カラム名をを大文字や小文字に変換する規約があります。
指定しない場合、変換は行われません。