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

データベース設計のアンチパターン リトライ+バッチ分割+バッチの再利用不可

Contents1 リトライ1.1 デメリット1.2 対策2 バッチ分割2.1 デメリット2.2 対策3 バッチ再利用不可3.1 デメリット3.2 対策 リトライ ※OLTP=オンライントランザクショ …

no image

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

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

no image

mavenのリモートリポジトリについて

JPAでO/Rマッパーに慣れてからというもの通常のSQLをごりごり書くのが億劫になってきました。 億劫というかいろいろとリスクがありますね。 問題点としてはコンパイルするときにエラーが検知できなかった …

no image

sourceコマンドに関して(Linuxサーバー&MySQL)

Linux上ではコマンドをテキストファイルに記述して、

と入力すると命令を実行してくれます。 シェルスクリプトよりもお手軽に実行できる …

no image

ApacheCommonsのライブラリ

先日のエントリーでBeanUtilsが非常に使えるという話をしたのですが、それ以外にもApacheCommonsのライブラリには使えるものがかなりあります。 かなりあります、というかなぜ今まで使ってな …

アーカイブ