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

新手上路,请多包涵

我是 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 变量值呢?

原文由 firstpostcommenter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

你可以试试这个方法。


    谓词 date = cb.between(root.get("date"), dateBefore, dateAfter);
    predicate.add(日期);

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

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


    返回 entityManager.createQuery(查询)
    .setParameter(d, currentDate, TemporalType.DATE).getResultList();

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

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

原文由 Gabriel Moreira 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题