JPQLの作成方法


🖊 JPQL構文

select m from Member m where m.age > 26
  • Entityと属性は大文字と小文字を区別する必要があります.
  • JPQLキーワード大文字小文字区別なし(SELECT、FROM、WHERE)
  • エイリアス(m)
  • が必要

    TypeQuery, Query

    TypedQuery<Member> query = 
    	em.createQuery("select m from Member m where m.age > 26", Member.class);
    Query query = 
    	em.createQuery("select m .age, m.username from Member m where m.age > 26");
  • タイプQueryは、戻りタイプが明確な場合に
  • を使用する
  • Queryは、タイプが不明な場合を返すために使用されます.
  • クエリ結果API

    TypedQuery<Member> query = 
    	em.createQuery("select m from Member m where m.age > 26", Member.class);
        
    List<Member> members = query.getResultList();
  • getResultList結果がない場合、空のリストが返されます.
  • TypedQuery<Member> query = 
    	em.createQuery("select m from Member m where m.id = 1", Member.class);
        
    Member member = query.getSingleResult();
  • getSingleResult正しい結果が返されない場合、Exceptionエラーが発生します.
  • Spring datajpaでは、結果がなければnullを返す方法を抽象化して提供することができます.
  • バインドパラメータ

    int userAge = 100;
    TypedQuery<Member> query = 
    	em.createQuery("select m from Member m where m.age > :age", Member.class)
        	.setParameter("age", userAge);
        
    List<Member> members = query.getResultList();

    NamedQuery

    Entity
    @NamedQuery(
    	name = "Member.findByUsername",
            query = select m from Member m where m.username = :username")
    public class Member {
    	...
    }
  • アプリケーションがロードされると、クエリーエラーが発生する可能性があります.
  • SpringBootで@Queryを名前クエリとして登録します.