【问题标题】:Jpa Specification Criteria Api for searching range of dates用于搜索日期范围的 Jpa Specification Criteria Api
【发布时间】:2020-11-10 21:30:45
【问题描述】:

如果我想检查是否在某个特定日期应用谓词,我可以这样做:

predicate = builder.between(root.<LocalDate>get('date'),startDate,endDate);

但现在我想申请一个日期范围。 即,如果我有一个从 -> 2020-07-20 到 -> 2020-07-25 的约会,并且, 因此我的日期范围是(从,到)这里我想检查谓词,它想提取日期 2020-07-23 的约会,然后它应该在开始日期和结束日期之间。 我不知道这是否是一种可能的情况。但正如上面例子中提到的 我想要这样的查询:

predicate = builder.between(root.<LocalDate>get('range(from, to)'),startDate,endDate);

【问题讨论】:

  • 对于range of dates 显示示例

标签: spring jpa spring-data-jpa criteria specifications


【解决方案1】:

您必须将其分解为基于 startDateendDatefromto 的谓词。

我不完全确定我的意图是否正确,但我想你想检查区间 [from,to] 是否完全在区间 [startDate, endDate]

您可以使用类似于以下的代码来做到这一点:

Predicate startsAfterBegin =  builder.greaterThan(root.get('from'), startDate);
Predicate endsBeforeEnd =  builder.lessThan(root.get('to'), endDate);
Predicate isContained = builder.and(startsAfterBegin, endsBeforeEnd);

【讨论】:

  • 不应该像endsBeforeEnd那样,builder.lessThan(root.get('to'), endDate);是的,你得到了我,我必须做同样的事情。
猜你喜欢
  • 2016-01-14
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
相关资源
最近更新 更多