可以使用动态查询或指定查询(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();
要创建动态查询,请使用实体管理器接口的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();