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

例外処理について その2

以前、「例外処理について」で例外処理について記述をしたんですが、漠然としていたのともう1回まとめなおしたかったため、メモしておきます。 Contents1 例外とは?2 例外のクラス分け2.1 Thr …

no image

CSVの入出力に関して

業務でCSVの入出力と格闘中。 まあよくある頻出の作業だったりするんですが、自前でやるとなかなか面倒です。 面倒なポイントとしては クオートのエスケープ カンマのエスケープ ヘッダーとの結合 ですかね …

no image

BeanValidationの動的メッセージ出力について

JSF+ManagedBeanでは基本的にbeanValidationを使ってバリデーションを行い、エラーメッセージなどはプロパティファイルで管理するのが一般的です。 アノテーションなどを付与してあげ …

no image

arquillianでの外部ライブラリ使用

現状、実務ではDBのテストでは基本的にarquillianを使っています。 arquillianとにかく、重いですね~。 まあglassfishを動かしているので仕方ないかもしれませんが、簡単なテスト …

no image

外部結合 応用編

本日は「達人に学ぶSQL徹底指南書」の外部結合の応用編です。 下記のような3つのテーブルがあるとします。例によってここを使わしてもらってます。 tblsex sex_cd | sex —& …