今回は、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)
