JPAでエンティティの取得を行うとき、重要になるのが「
JPQL」です。
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とほぼ同じですね。