skillup

技術ブログ

Database Java

JPQLでの算術関数

投稿日:

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。

JPQLでもこれらを通常通り扱うことができます。

サンプルケースその1

検索結果がSUMやCOUNTなどの数値のみの場合

例えばid とscore(点数)のみのエンティティ(Student.classとします。)があるとし、

これの合計値を求めたい場合下記のように取り出すことができます。

サンプルケースその2他のレコードと一緒に算術式も出す場合

例えば

ある会社の部署(プロパティ id, departmentName)と

社員(id,departmentiId,age)があり、ある部署の社員の年齢の合計を出したいとします。

こちらは少々複雑でDTOというクラスを作ります。

このリレーションに関しては、こちらの記事でも書いてまして、基本的には同じです。

  • エンティティを継承する(エンティティのプロパティをそのまま使える)し、コンストラクタ式を使う
  • 合計値やリレーションのプロパティなど既存のエンティティにないものを持てる

BushoDto

JPQLでのコード

上記のようにすることでO/Rマッパーを使った算術式が使えます。

参考リンク

JPQLで使用可能な算術関数

http://itref.fc2web.com/java/jpa/

http://d.hatena.ne.jp/megascus/20120925/1348575449

JPQLでの算術式のサンプルコード

http://qiita.com/opengl-8080/items/e074330b5f4862d9995f#%E5%90%88%E8%A8%88%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8Bsum

http://qiita.com/opengl-8080/items/6e3e03e4c90cd3d5e211#order-by

 

 

-Database, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

アンチパターン 参照渡しと値渡し+キー情報の設定+同一値を複数テーブルに配置+正規化が不十分+集計表+不適切なステータス値

本日は自分がデータベースの設計をしていて気を付かないといけないなーと思った点などを。 注意点としては設計のミスは実装で取り返しにくいことが多いので極力気を付けましょう。あといろいろなテーブルのパターン …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

JSONへの変換

近年はJavaSciprtを利用した動的なサイトが多いため、データのやり取りをAjaxで行うことも多かったりします。 JavaScriptの場合、データをJSON形式で扱うため、サーバー側からレスポン …

no image

CentOS上にglassfish構築+arquillianテスト

JavaEEの開発でアプリケーションサーバーとしてglassfishを使っています。 今回、CentOS(ver6.6)に立てる機会があったので、そのネタを共有したいと思います。 Contents1 …

no image

HAVING句の活用 発展編

今回からはまたまたHAVING句です。 下記のようなテーブル(teams)があり、全員が待機状態のチーム(全員がそろっている)を求めます。 member | team_id | status &#82 …