JPQLとQueryアノテーション (1/5)
作成:2017-10-28 09:42
更新:2017-10-28 09:42
更新:2017-10-28 09:42
■JPQLの基本
JPAでエンティティの取得を行うとき、重要になるのが「JPQL」です。
JPQLは、SQLのクエリー文に近い簡易言語です。が、微妙に違うので、最初に基本的な書き方を覚えてしまったほうがいいでしょう。JPQLの基本は、こんな感じになっています。
○○はエイリアスです。JPQLでは、selectの後にエイリアスを指定し、このエイリアスを使って文を作ります。エイリアスは何でも構いません。aでもbでもxでもyでも、abcdefgでも大丈夫です(エイリアスですから、まあ普通はもっと短い名前にしますが)。
例えば、MyDataEntityのエンティティを取得するなら、
こんな具合に記述すればいいわけですね。ここではaaaというエイリアスを指定しましたが、もちろん別の名前でもかまいません。
取得するエンティティを絞り込む場合は、SQLと同様にwhere句を使います。これは、こんな感じに記述することになるでしょう。
となります。where以降で、特定の項目を指定して式を記述する場合には、エイリアス内の項目を指定する感じになります。例えば、「MyDataEntityのidが1より大きいものを取得」ならば、
こんな感じになるでしょう。whereの式を見ると、aaa.idというようにしてチェックする対象の項目を指定しています。まるで、aaaにMyDataEntityインスタンスが代入されているようですね? こんな具合にしてエンティティ内の各項目を指定し利用するのです。
レコードの並べ替えで用いられる「order by」もJPQLでそのまま利用することができます。これもwhereと同様、エイリアスを使って並べ替えのための項目を指定します。
例えば、このようにすれば、idを逆順に並べ替えることができます。昇順はasc、降順はdescをつけますが、昇順の場合は省略してもかまいません。……まぁ、このあたりはSQLとほぼ同じですね。
JPQLは、SQLのクエリー文に近い簡易言語です。が、微妙に違うので、最初に基本的な書き方を覚えてしまったほうがいいでしょう。JPQLの基本は、こんな感じになっています。
select ○○ from エンティティ ○○
○○はエイリアスです。JPQLでは、selectの後にエイリアスを指定し、このエイリアスを使って文を作ります。エイリアスは何でも構いません。aでもbでもxでもyでも、abcdefgでも大丈夫です(エイリアスですから、まあ普通はもっと短い名前にしますが)。
例えば、MyDataEntityのエンティティを取得するなら、
select aaa from MyDataEntity aaa
こんな具合に記述すればいいわけですね。ここではaaaというエイリアスを指定しましたが、もちろん別の名前でもかまいません。
■where句の利用
取得するエンティティを絞り込む場合は、SQLと同様にwhere句を使います。これは、こんな感じに記述することになるでしょう。
select ○○ from エンティティ ○○ where ……式……
となります。where以降で、特定の項目を指定して式を記述する場合には、エイリアス内の項目を指定する感じになります。例えば、「MyDataEntityのidが1より大きいものを取得」ならば、
select aaa from MyDataEntity aaa where aaa.id > 1
こんな感じになるでしょう。whereの式を見ると、aaa.idというようにしてチェックする対象の項目を指定しています。まるで、aaaにMyDataEntityインスタンスが代入されているようですね? こんな具合にしてエンティティ内の各項目を指定し利用するのです。
■order by句
レコードの並べ替えで用いられる「order by」もJPQLでそのまま利用することができます。これもwhereと同様、エイリアスを使って並べ替えのための項目を指定します。
select aaa from MyDataEntity aaa order by aaa.id desc
例えば、このようにすれば、idを逆順に並べ替えることができます。昇順はasc、降順はdescをつけますが、昇順の場合は省略してもかまいません。……まぁ、このあたりはSQLとほぼ同じですね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る