条件 API
条件 API 是使用 Java™ 对象构建查询的 API,可作为另一种为 Java 持久性查询语言 (JPQL) 查询构建字符串的方法。
条件 API 支持在运行时动态地构建查询,并且还能够构建可由编译器进行验证的类型安全查询。JPQL 查询的正确性无法由编译器进行验证,并且必须在测试期间在运行时验证。
以下是一个 JPQL 查询样本,它返回工作时间少于五年的职员的列表:
SELECT e FROM Employee e WHERE e.serviceyears < 5
以下是一个等价的条件查询样本:QueryBuilder qb = emf.getQueryBuilder();
CriteriaQuery q = qb.create(Employee.class);
Root e = q.from(Employee.class);
q.where(qb.lt(e.get(Employee_.serviceyears), 5));
TypedQuery tq = em.createQuery(q);
List result = q.getResultList();
注: Employee_ 是 Employee 类的元模型。
两个重要的功能是根据 JPQL 所作的改进:
- 条件 API 可以表达无法通过 JPQL 表达的查询。有关更详细的信息,请参阅 developerWorks® 文章 Dynamic, typesafe queries in JPA 2.0 中的“Editable data store expressions”。
- 可以采用编程方式编辑条件查询。有关更多信息,请参阅 developerWorks 文章 Dynamic, typesafe queries in JPA 2.0 中的“Editable query”。