ソフトウェア技術TweetJPQLなどJPAの機能ではカバーできない、RDB固有の機能として関数がある。countやsumなど基本的なものはあるが、それから離れるとダメだ。いって無駄に関数を増やしたところでユーザー定義関数などもありとてもカバーしきれない。いうわけで、JPA2.1ではついにユーザー定義を含めて関数を自由に呼び出せるようになった。}idとnameのカラムを持つ。利用例Derbyの組み込みモードで利用している。同一JVMなため、ユーザー定義関数を簡単に扱えるためだ。ネットワークモードの場合はそちらのVMに設定が必要なのでそこそこ面倒なので注意。//ユーザー定義関数を設定。}}上のコードはfunc_joinという名前のユーザー定義関数を作成している。実装はjoinメソッド。Derbyのユーザー定義関数はJavaのコードで書けるため、とっても楽。staticなメソッドをユーザー定義関数にできるのだ。JPQLでの使い方も簡単。パラメータ...)となっている。実行結果001:はろー020:関数300:わーるどjoinメソッドが各行で呼ばれているのがわかる。そのほかユーザー定義でない関数ももちろんOK。以下は文字列の長さを返すlength関数。}}JPQLの関数との組み合わせもOK。System.out.println(result);}sum関数をJPQLのsum関数ではなくてRDBの本来のsum関数で呼ぶこともできる。意味はないと思うけど。System.out.println(result);}これにより、JPAだけでかなりの範囲がカバーされる。定型的なことには強かったJPAだが、その例外的なRDB固有の関数にアクセスできるようになったのは大きな進歩だ。これならばたしかにJPQLの言語拡張を最小限で済む。Criteriaももちろん対応しているので調べてみるとよいだろう。1.0ではINにコレクションが使えなかった。CASE文を試すJPA2.0にはCASE文が使えるようになった。月別アーカイブおすすめはてなブログをはじめよう!shinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。