Hibernate 如何编写JPA条件查询来查找日期范围内的对象并包括该日期范围的端点?
我正在使用JPA2.1和Hibenrate 5.1.0.Final。如何编写JPA CriteriaBuilder查询,在其中查询日期范围内的对象,并希望在查询中包含日期范围的端点?我注意到下面的代码Hibernate 如何编写JPA条件查询来查找日期范围内的对象并包括该日期范围的端点?,hibernate,date,jpa,range,jpa-2.1,Hibernate,Date,Jpa,Range,Jpa 2.1,我正在使用JPA2.1和Hibenrate 5.1.0.Final。如何编写JPA CriteriaBuilder查询,在其中查询日期范围内的对象,并希望在查询中包含日期范围的端点?我注意到下面的代码 final java.util.Date searchDate = objectDate.toDateTimeAtStartOfDay().toDate(); final ParameterExpression<Date> d = builder.parameter(Date.
final java.util.Date searchDate = objectDate.toDateTimeAtStartOfDay().toDate();
final ParameterExpression<Date> d = builder.parameter(Date.class);
query.where(
…
builder.between(d, objectRoot.<Date>get(MyObject_.objectDate), objectRoot.<Date>get(MyObject_.objectEndDate)));
final java.util.Date searchDate=objectDate.toDateTimeAtStartOfDay().toDate();
最终参数expression d=builder.parameter(Date.class);
请问,在哪里(
…
builder.between(d,objectRoot.get(MyObject_.objectDate),objectRoot.get(MyObject_.objectEndDate));
如果条件正好落在某个端点上,此查询将不会返回任何结果。有关日期字段的问题几乎总是由于时间组件造成的。由于searchDate是日期开始时(DD-MON-YY 12:00am)的时间,因此在与低端进行比较时,由于时间差异,两者可能不匹配。越少越好?除此之外,您还必须发布生成的SQL,因为在不发布SQL的情况下调试类似的东西有点毫无意义。尼尔,我说,您不需要查看SQL就可以理解这个问题。“中间”不包括端点,这在它们的文档中。我想包括端点。这里的答案似乎是越少越好。