カテゴリ: Spring 更新日: 2026/01/30

SpringのCriteriaBuilderでisTrueメソッドを使った条件付きクエリ作成方法を解説

CriteriaBuilderのisTrueメソッド
CriteriaBuilderのisTrueメソッド

先生と生徒の会話形式で理解しよう

生徒

「Springで、あるフラグがtrueのデータだけを検索する方法を教えてください!」

先生

「SpringのCriteriaBuilderクラスにはisTrueメソッドがあります。このメソッドを使えば、簡単にフラグがtrueのデータを取得できますよ。」

生徒

「具体的にはどのように使えば良いですか?」

先生

「それでは、isTrueメソッドの使い方を解説しますね!」

1. CriteriaBuilderとは?

1. CriteriaBuilderとは?
1. CriteriaBuilderとは?

CriteriaBuilderは、SpringのJPAを使用して動的なクエリを作成するためのクラスです。このクラスを使うことで、SQLを直接書く必要がなく、Javaコードで簡単にクエリを構築できます。

特に動的な条件を扱う場合や、複雑なクエリが必要な場合に非常に役立ちます。isTrueメソッドは、このCriteriaBuilderの一部であり、ブール型の値がtrueであるデータを検索するために使われます。

2. isTrueメソッドとは?

2. isTrueメソッドとは?
2. isTrueメソッドとは?

isTrueメソッドは、CriteriaBuilderが提供するメソッドの一つで、指定した条件がtrueである場合に一致するデータを検索するために使用されます。

例えば、データベース内で「有効フラグ」がtrueになっているデータだけを取得するケースや、特定の条件が満たされているかどうかをチェックする場合に非常に便利です。

このメソッドを使用することで、ブール型のフィールドに基づいた検索クエリを簡単に作成することができます。

3. 実際のコード例

3. 実際のコード例
3. 実際のコード例

以下は、「有効フラグ」がtrueのデータを取得する例です。


import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;

import org.springframework.stereotype.Repository;
import org.springframework.beans.factory.annotation.Autowired;

import jakarta.persistence.EntityManager;

@Repository
public class ProductRepository {

    @Autowired
    private EntityManager entityManager;

    public List<Product> findActiveProducts() {
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Product> query = cb.createQuery(Product.class);
        Root<Product> root = query.from(Product.class);

        query.select(root).where(cb.isTrue(root.get("activeFlag")));

        return entityManager.createQuery(query).getResultList();
    }
}

このコードのポイント:

  • CriteriaBuilderを使用して、動的なクエリを構築している点。
  • isTrueメソッドを使って、指定した条件を簡単に設定している点。
  • 「有効フラグ」がtrueのデータだけを検索している点。

4. 実行結果例

4. 実行結果例
4. 実行結果例

データベースに以下のデータがある場合:


ID | 商品名      | 有効フラグ
1  | 商品A       | true
2  | 商品B       | false
3  | 商品C       | true

この場合、検索結果は以下の通りです:


商品A, 商品C

5. 応用:複数条件を組み合わせたクエリ作成

5. 応用:複数条件を組み合わせたクエリ作成
5. 応用:複数条件を組み合わせたクエリ作成

isTrueメソッドは、他のメソッドと組み合わせて複数条件を持つクエリを作成することも可能です。例えば、「有効フラグがtrueで、かつ価格が100以上の商品」を検索する場合、以下のように記述します。


query.where(
    cb.and(
        cb.isTrue(root.get("activeFlag")),
        cb.greaterThanOrEqualTo(root.get("price"), 100)
    )
);

このように、isTrueメソッドを活用すれば、柔軟なクエリを効率よく作成することができます。

6. まとめ

6. まとめ
6. まとめ

isTrueメソッドを使うことで、指定した条件がtrueであるデータを簡単に検索することができます。SpringのCriteriaBuilderを利用した動的クエリ作成の基本を理解し、他の条件メソッドと組み合わせることで、さらに複雑な検索ロジックに対応することができます。

実際の開発では、クエリを簡潔かつ効率的に構築することが重要です。isTrueメソッドは、その目的にぴったりのツールとなりますので、ぜひ活用してください。

まとめ

まとめ
まとめ

CriteriaBuilderとisTrueメソッドの理解を振り返る

ここまで、SpringのJPAにおけるCriteriaBuilderと、その中でも特に使用頻度の高いisTrueメソッドについて解説してきました。CriteriaBuilderは、SQLを直接記述せずにJavaコードのみで安全かつ柔軟なクエリを構築できる点が大きな特徴です。可読性が高く、条件の追加や変更にも強いため、業務システムや長期運用されるアプリケーションでは欠かせない存在といえます。

中でもisTrueメソッドは、論理値を扱うカラムに対して直感的な条件指定ができる点が魅力です。有効フラグ、削除フラグ、公開状態フラグなど、実務では真偽値を使った判定は非常に多く、isTrueを正しく理解しておくことで、検索処理の実装が一気に楽になります。

動的クエリで保守性と拡張性を高める

CriteriaBuilderを使ったクエリ作成の強みは、条件を動的に組み立てられる点にあります。固定のJPQLやSQLでは対応しづらい検索条件の分岐も、Javaの制御構文と組み合わせることで柔軟に対応できます。今回紹介したisTrueメソッドは、その中でも基本となる要素であり、他の条件メソッドと組み合わせることで実務に即した検索処理を構築できます。

例えば、ログインユーザーの権限によって検索条件を切り替えたり、画面入力に応じて条件を追加したりする場合でも、CriteriaBuilderであれば無理なく実装できます。こうした設計は、将来的な仕様変更にも強く、コードの保守性向上にもつながります。

実務でよく使われるisTrueの応用例

isTrueメソッドは単体で使うだけでなく、andorと組み合わせることで、より実践的なクエリを作成できます。以下は、有効フラグがtrueで、かつ在庫数が一以上の商品を検索するサンプルです。


query.where(
    cb.and(
        cb.isTrue(root.get("activeFlag")),
        cb.greaterThan(root.get("stock"), 0)
    )
);

このように条件を組み合わせることで、業務要件に沿った検索ロジックを自然な形で表現できます。コードを見ただけで条件内容が分かる点も、CriteriaBuilderの大きな利点です。

学習時につまずきやすいポイント

初心者がつまずきやすい点として、ブール型カラムの扱いがあります。trueやfalseを直接比較しようとしてエラーになるケースや、nullとの違いを意識せずに実装してしまうケースも少なくありません。isTrueメソッドを使うことで、意図しない条件ミスを防ぎ、安定したクエリを記述できます。

また、CriteriaBuilderは記述量がやや多く感じられることもありますが、その分型安全であり、実行時エラーを減らせるメリットがあります。慣れてくると、複雑な検索条件でも安心して実装できるようになります。

先生と生徒の振り返り会話

生徒

「CriteriaBuilderのisTrueって、思っていた以上に実務で使えそうですね。有効フラグの検索がすごく分かりやすくなりました。」

先生

「その通りです。特に業務システムでは、trueかfalseかで状態を管理する設計が多いので、isTrueを自然に使えるようになると実装スピードが上がりますよ。」

生徒

「andやorと組み合わせると、画面の検索条件もそのままコードに落とし込めそうですね。」

先生

「ええ。その考え方が大切です。CriteriaBuilderは、検索仕様をそのままJavaコードで表現できるのが強みです。今回学んだisTrueを基礎に、他の条件メソッドもぜひ試してみてください。」

生徒

「はい。これでSpringの条件付きクエリに少し自信が持てました。」

Springの学習を効率化したい方へ

この記事の内容をもっと深く知るには、以下の入門書が最適です。

Spring Framework超入門をAmazonで見る
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Like」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.4
Java&Spring記事人気No4
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.5
Java&Spring記事人気No5
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.6
Java&Spring記事人気No6
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説