// Query for a List of objects.
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery();
Root employee = criteriaQuery.from(Employee.class);
criteriaQuery.where(criteriaBuilder.greaterThan(employee.get("salary"), 100000));
Query query = entityManager.createQuery(criteriaQuery);
List<Employee> result = query.getResultList();
2条答案
按热度按时间omhiaaxx1#
标准
JPA 2.0中添加了CriteriaAPI。根据Java Persistence wikibook:
Java持久性标准API用于通过构造基于对象的查询定义对象来定义动态查询,而不是使用JPQL的基于字符串的方法。
CriteriaBuilder
用于构建CriteriaQuery
对象,然后使用该对象执行查询,如本例中的Java Persistence wikibook:同品种器械
Predicate
类是Criteria API的一部分,用于构造where子句。例如,在Java EE 7 documentation:规格
Specification
接口由Spring Data JPA project定义。为了能够定义可重复使用的 predicate ,我们引入了规范接口,该接口衍生自Eric Evans的Domain Driven Desig book中引入的概念。规范可以定义如下:
然后在
JpaSpecificationExecutor
中使用。h9a6wy2h2#
不是来自API文档,而是我所看到的:
Criteria
是一个抽象的概念,类似于Predicates
的集合。CriteriaQuery
将所有的Criteria
设置为Predicate
。因为
Criteria
是Criterion
的复数,所以可以说Predicate
等于Criterion
。Spring
Specification
的实现旨在提供在构建CriteriaQueries
时使用specification pattern
的方法。请随时纠正我的错误-最好是API文档。