15.16. Tips & Tricks


実際に結果を返さなくてもクエリの結果数を数えることができます:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
Copy to Clipboard Toggle word wrap
コレクションのサイズにより結果を並べ替えるためには以下のクエリを使用します:
select usr.id, usr.name
from User as usr
    left join usr.messages as msg
group by usr.id, usr.name
order by count(msg)
Copy to Clipboard Toggle word wrap
使用しているデータベースがサブセレクトをサポートする場合、クエリの where 節でサイズによる選択条件を設定できます:
from User usr where size(usr.messages) >= 1
Copy to Clipboard Toggle word wrap
使用しているデータベースが副問い合わせ(Subselect)に対応していない場合は、次のクエリを使用してください:
select usr.id, usr.name
from User usr
    join usr.messages msg
group by usr.id, usr.name
having count(msg) >= 1
Copy to Clipboard Toggle word wrap
この解決法は、内部結合をしているせいでメッセージの件数がゼロの User を返すことができないため、以下の形式も役立ちます:
select usr.id, usr.name
from User as usr
    left join usr.messages as msg
group by usr.id, usr.name
having count(msg) = 0
Copy to Clipboard Toggle word wrap
JavaBean のプロパティは、名前付きのクエリパラメータに結びつけることが出来ます:
Query q = s.createQuery("from foo Foo as foo where foo.name=:name and foo.size=:size");
q.setProperties(fooBean); // fooBean has getName() and getSize()
List foos = q.list();
Copy to Clipboard Toggle word wrap
コレクションはフィルタ付き Query インターフェースを使用することでページをつけることができます:
Query q = s.createFilter( collection, "" ); // the trivial filter
q.setMaxResults(PAGE_SIZE);
q.setFirstResult(PAGE_SIZE * pageNumber);
List page = q.list();
Copy to Clipboard Toggle word wrap
コレクション要素はクエリフィルタを使って、並べ替えやグループ分けが出来ます:
Collection orderedCollection = s.createFilter( collection, "order by this.amount" ).list();
  Collection counts = s.createFilter( collection, "select this.type, count(this) group by this.type" ).list();
Copy to Clipboard Toggle word wrap
コレクションを初期化せずにコレクションのサイズを得ることができます:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue();
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat