我正在像这样的criteriaBuilder在运行时构建查询。
过滤器通过以下两个因素过滤对象:开始日期和结束日期之间的日期,字符串字段与集合中的一个字符串匹配,等等。
Predicate[] predicates = buildPredicates(filter, criteriaBuilder, root);
criteriaQuery.select(root).where(predicates);
TypedQuery<MonitorStatusHistory> query = entityManager.createQuery(criteriaQuery);
if (filter.getPage() != null && filter.getSize() != null) {
query
.setFirstResult(filter.getPage() * filter.getSize())
.setMaxResults(filter.getSize());
}
return query.getResultList();
如何使用JPA信息库中的spring data jpa工具实现相同的目标?
我需要支持类似的查询
SELECT * FROM obj WHERE obj.date > filter.startDate and
obj.date < filter.finishDate and obj.num=12 or obj.num=32
我们假设过滤器类具有以下属性:
private Set<Integers> allowedNums; (allowed values for obj.num)
private ZonedDateTime startDate; (obj.date > this)
private ZonedDateTime finishDate; (obj.date < this)
private Integer page; (pagination page)
private Integer size; (pagination objs per page)