答案 1
标准
标准 API 是在 JPA 2.0 中添加的。根据Java Persistence维基教科书:
Java 持久性条件 API 用于通过构造基于对象的查询定义对象来定义动态查询,而不是使用 JPQL 的基于字符串的方法。
CriteriaBuilder
用于构建一个VariaQuery
对象,然后用于执行查询,例如Java持久性wikibook中的此示例:
// 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();
谓语
谓词
类是条件 API 的一部分,用于构造 where 子句。例如,在从 Java EE 7 文档中摘录的这个修改后的示例中:
CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Root<Pet> pet = cq.from(Pet.class);
Predicate predicate1 = cb.equal(pet.get(Pet_.name), "Fido");
Predicate predicate2 = cb.equal(pet.get(Pet_.color), "brown");
cq.where(predicate1.and(predicate2));
规范
规范
接口由 Spring Data JPA 项目定义。根据以下博客文章,Advanced Spring Data JPA - Specification and Querydsl,来自Oliver Gierke:
为了能够定义可重用的谓词,我们引入了规范接口,该接口源自 Eric Evans 的 Domain Driven Desig 一书中引入的概念。可以定义规范,例如:
public static Specification<Customer> customerHasBirthday() {
return new Specification<Customer> {
public Predicate toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb) {
return cb.equal(root.get(Customer_.birthday), today);
}
};
}
然后用于 JpaSpecificationExecutor
。
List<Customer> customers = customerRepository.findAll(customerHasBirthday());
答案 2
不是来自API文档,而是在我看来:
Criteria
是一个抽象的概念,是. 具有所有设置为 s。Predicates
CriteriaQuery
Criteria
Predicate
正如一个复数可能说等于.Criteria
Criterion
Predicate
Criterion
弹簧是要实现的,以提供在构造时使用规范模式
的手段。Specification
CriteriaQueries
请随时用 - 最好是API - 文档来纠正我。
推荐
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-
标签
推荐