JPA – Select時にパラメータを指定する方法

今回は、JPAの検索t時に条件パラメータの使い方について調べてみようと思います。

JPQL

JPQLとは

ジャカルタ永続クエリ言語JPQL ;旧れるJava Persistence問い合わせ言語)は、プラットフォームに依存しているオブジェクト指向の クエリ言語の一部として定義ジャカルタ持続性(JPA;旧れるJava Persistence API)仕様。

JPQLは、リレーショナルデータベースに格納されているエンティティに対してクエリを実行するために使用されます。これはSQLに大きく影響を受けており、そのクエリは構文的にはSQLクエリに似ていますが、データベーステーブルを直接操作するのではなく、JPAエンティティオブジェクトに対して動作します。

WIKI

使い方

@Query("SELECT u FROM User u WHERE u.status = :status and u.name = :name")
User findUserByStatusAndNameNamedParams(
  @Param("status") Integer status, 
  @Param("name") String name);
  • :nameのように使います。
  • :nameには@Param(“name”)が指定されたパラメータの値が代入されます。
  • :statusには@Param(“status”)が指定されたパラメータの値が代入されます。
  • @Paramアノテーションに指定したパラメータ名(”status”)がマッピングされるので@Param(“status”) Integer userStatusのように書いても動きます。

ネイティブクエリ

@Query(value = "SELECT * FROM Users u WHERE u.status = :status and u.name = :name", 
  nativeQuery = true)
User findUserByStatusAndNameNamedParamsNative(
  @Param("status") Integer status, @Param("name") String name);
  • nativeQuery = trueを指定します。
  • 「SELECT *」の部分が違うのでご注意です。
  • JPQLと名前を介してパラメータをクエリに渡すのは違いはありません。(@Param)

コメントを残す