JAVA Criteria API我需要获取从特定日期经过的时间

JAVA Criteria API我需要获取从特定日期经过的时间,java,spring-data-jpa,jpql,hibernate-criteria,criteria-api,Java,Spring Data Jpa,Jpql,Hibernate Criteria,Criteria Api,我需要选择数据库中创建日期仅超过5天的所有可用记录 更多描述。 我需要在创建1天或2天之后获得所有订单 我的意思是,我可以从谓词对象中的当前日期减去创建日期,然后检查它是否等于经过的时间 int passedDays = 5; Page<Order> orders = orderRepository.findAll(new Specification<Order>() { @Override public Predicate toPredicate(Roo

我需要选择数据库中创建日期仅超过5天的所有可用记录 更多描述。 我需要在创建1天或2天之后获得所有订单

我的意思是,我可以从谓词对象中的当前日期减去创建日期,然后检查它是否等于经过的时间

int passedDays = 5;
Page<Order> orders = orderRepository.findAll(new Specification<Order>() {
    @Override
    public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        List<Predicate> predicates = new ArrayList<>();
        // where created - now date = passedDays 
        predicates.add(cb.equal(root.<Date>get("createdAt"),passedDays));
        return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    }
},pageable);
int passedDays=5;
PageOrders=orderRepository.findAll(新规范(){
@凌驾
公共谓词toPredicate(根根、CriteriaQuery查询、CriteriaBuilder cb){
列表谓词=新的ArrayList();
//创建位置-现在日期=过去日期
add(cb.equal(root.get(“createdAt”),passedDays));
返回cb.and(predicates.toArray(新谓词[predicates.size()]);
}
},可分页);

您应该在限制之间使用

int passedDays = 5;

@Override
public Predicate toPredicate(Root<AuditTrail> root, CriteriaQuery<?> query,
                                         CriteriaBuilder cb) {

    List<Predicate> predicates = new ArrayList<>();

    Instant now = Instant.now();
    Instant then = now.minus(passedDays, ChronoUnit.DAYS);
    
    predicates.add(cb.between(root.get("createdAt"), then, now));

    // if your createdAt has type java.util.Date or java.sql.Date
    // predicates.add(cb.between(root.get("createdAt"), Date.from(then), Date.from(now)));

    return cb.and(predicates.toArray(new Predicate[predicates.size()]));            
}
int passedDays=5;
@凌驾
公共谓词toPredicate(根根、标准查询、,
标准生成器(cb){
列表谓词=新的ArrayList();
即时现在=即时。现在();
瞬间然后=现在.减(过去的天,计时的.天);
add(cb.between(root.get(“createdAt”),then,now));
//如果您的createdAt的类型为java.util.Date或java.sql.Date
//add(cb.between(root.get(“createdAt”)、Date.from(then)、Date.from(now));
返回cb.and(predicates.toArray(新谓词[predicates.size()]);
}