如何编写JPA条件查询以查找日期范围内的对象并包括该日期范围的端点?

时间:2016-04-07 19:26:45

标签: hibernate date jpa range jpa-2.1

我正在使用JPA 2.1和Hibenrate 5.1.0.Final。如何编写JPA CriteriaBuilder查询,在该查询中我查询日期范围内的对象,并且我想在查询中包含日期范围的端点?我注意到以下代码

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)));

如果条件完全落在其中一个端点上,则此查询不会返回任何结果。

1 个答案:

答案 0 :(得分:0)

有关日期字段的问题几乎总是因为时间成分。由于searchDate是日期开始时的时间(DD-MON-YY 12:00 am),因此与BETWEEN的低端相比可能因时间不同而不匹配。