日期 return 之间的休眠搜索在记录存在时没有结果

hibernate search between date return no results when records exists

在我的应用程序中,我允许用户select 一个日期范围进行搜索,而这两个日期可以是同一天。这两个 datepickers 像这样得到 String 的一天:

14/01/2016

并且我手动添加 HH:mm:ss 部分以将它们解析为 Date 对象,并将它们传递到我的过滤器中进行搜索。其实是这样的:

filter.setDateFrom(dateFormatComplete.parse(form.getDateFromStr().concat(" 00:00:00")));
filter.setDateTo(dateFormatComplete.parse(form.getDateToStr().concat(" 23:59:59")));

当我使用 Hibernate 在我的代码中使用 hibernate.sql.Query 进行此类搜索时:

select distinct myBean ..... where myBean.date >= :dateFrom and myBean.date <= :dateTo order by myBean.date asc

调试时可以看到传入的参数:

dateFrom =Thu Jan 14 00:00:00 CET 2016, dateTo =Thu Jan 14 23:59:59 CET 2016

没有返回结果,尽管我的 Oracle 数据库中有这条记录:

SELECT TO_CHAR( DATE, 'DD-MM-YYYY HH24:MI:SS') FROM MYBEAN WHERE  DATE between TO_DATE('14-01-2016 00:00:00', 'DD-MM-YYYY HH24:MI:SS') and TO_DATE('14-01-2016 23:59:59', 'DD-MM-YYYY HH24:MI:SS');
14-01-2016 10:37:14

如果我选择第13天和第14天,也没有结果。但是如果我选择14和15,是的。

所以我不明白。我看到了有关的问题,但我在这里正确配置了一天的开始和结束。为什么我无法获取我的记录?

编辑 DAO 方法是用 Query 实现的,出于某种原因我无法将其更改为 Criteria.

试试这个 -

filter.setDateFrom(dateFormatComplete.parse(form.getDateFromStr().concat(" 00:00:00")));
filter.setDateTo(dateFormatComplete.parse(form.getDateToStr().concat(" 23:59:59")));

criteria.add(Restrictions.between("dateField", fromDate, toDate));