skillup

技術ブログ

Database Java

JPQLでの算術関数

投稿日:2015年9月19日 更新日:

複雑な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/

GlassFish勉強会で金魚本に載ってないJPQLの話をしてきた

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

JavaEE使い方メモ(JPA その3 – JPQL)

JavaEE使い方メモ(JPA その4 – クライテリアAPI)

-Database, Java
-,

執筆者:


comment

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

関連記事

no image

String,Integer,Booleanの相互変換

データベースにはbooleanでデータが入っているのに画面では0か1の数字でないと表示ができないときなどがあると思います。 そんな時に文字列と論理値、あるいは文字列と数値、数値と論理値の変換などをする …

no image

JPAでのデータベースとの同期

このブログでも何回か書いてきたJPAですが、新規レコードをインサートさせた際IDを取得し、そのIDをもとに何らかのキーを作る、そういう処理があったので紹介させていただきます。 何回か書いてますが、JP …

no image

サブクエリ 応用編

本日も引き続きサブクエリです。 前回とちょっと近いですが、下記のような歯抜けのテーブル(sales2)があるとします。 year | sale ——+—&#8212 …

no image

外部結合 応用編2

引き続き結合についてです。 Contents1 1対Nの結合に関して2 完全外部結合3 差集合(class_aだけに存在するものとclass_bだけに存在するもの)3.1 class_aのみ3.2 c …

no image

MySQLのメモリ設定

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

アーカイブ