JPA中的动态查询与指定查询

可以使用动态查询或指定查询(named query)。指定查询随实体存储,可从应用程序重用。

  要创建动态查询,请使用实体管理器接口的createQuery方法,如下所示:

 Query query = em.createQuery(
 "select e from Employee e where e.empNo > 1");
 query.setParameter(1,100);
 return query.getResultList();
  如果希望将此查询用作指定查询,请在实体中使用NamedQuery注释,如下所示:

@Entity
@NamedQuery(name="findAllEmployee",
   query="select e from Employee e where e.empNo > 1")
 public abstract class Employee implements Serializable {
 }
  要执行指定查询,首先使用EntityManager接口上的createNamedQuery方法创建一个Query实例,如下所示:

query = em.createNamedQuery(" findAllEmployee");
query.setParameter(1,100);
return query.getResultList();指定参数
  可以在EJBQL查询中使用指定参数(named parameter)代替位置参数(positional parameter)。例如,可以将以上查询重写如下:

 "select e from Employee e where e.empNo > :empNo "

  如果在查询中使用指定参数,则必须设置此参数如下:

query = em.createNamedQuery("findAllEmployee");
query.setParameter("empNo",100);
return query.getResultList();

你可能感兴趣的:(JPA中的动态查询与指定查询)