gpt4 book ai didi

java - 添加 CriteriaBuilder.between(Date) 到谓词?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:40 25 4
gpt4 key购买 nike

我是 JPA 的新手

我正在尝试查询一个表,其中我的输入日期值应介于数据库记录的开始日期和结束日期之间

我正在尝试:

List<Predicate> conditionsList = new ArrayList<Predicate>();
conditionsList.add(criteriaBuilder.between(inputDate, root.get("startDate"), root.get("endDate")));

我从 Using JPA/Hibernate Criteria to pull between a date 找到了以下解决方案:

ParameterExpression<Date> d = criteriaBuilder.parameter(Date.class);
criteriaBuilder.between(d, root.<Date>get("startDate"), root.<Date>get("endDate"));

但是如何在将 CriteriaBuilder 添加到 Predicate 之前将 Parameterexpression 值设置为 inputDate 变量值?

最佳答案

你可以这样试试。

    Predicate date =  cb.between(root.get("date"), dateBefore, dateAfter);    predicate.add(date);

这种方式适用于我的情况。

但对于您的情况(使用 ParameterExpression)。

    return entityManager.createQuery(query)    .setParameter(d, currentDate, TemporalType.DATE).getResultList(); 

当您创建查询时,您会设置参数。currentDate 是你的日期,d 是您之前创建的 ParameterExpression

我更喜欢第一种方式,它对我来说更直观和合乎逻辑。

关于java - 添加 CriteriaBuilder.between(Date) 到谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41806152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com