JPA2.1のJPQLで増えたFunction関数を試してみる
JPA2.0からJPA2.1でJPQLにFunctionというキーワードが増えました。
データベースにすでに準備されている、もしくはユーザーが定義したプロシージャを実行することが出来る機能です。
- JPQL
select e from NewEntity e where function('TAN', e.dbl) > 0
※TANはDerbyにもともと用意されているタンジェントを返す関数。
実行すると以下の様なSQLとして実行されます。
SELECT ID AS a1, DBL AS a2 FROM NEWENTITY WHERE (TAN(DBL) > ?)
今まで、JPQLを実行するときはJPQLとして定義されている組み込み関数しか使えなかったけれども、これでJPQLでも個々のDBに用意されているプロシージャを呼ぶことができるようになりました。*1
これでNativeQueryに頼らなくてもよい場面が増えそうですね。