我在数据库中有一个定义为DATETIME的列notification_date。
当用户过滤器时,我只得到日期。所以我使用 Java 转换为数据和时间。例如,如果用户搜索日期为"2012-09-26"。最终转换的日期和时间格式将为"2012-09-26 17:34:00"
当我想搜索日期过滤器操作(如等于,小于,大于和日期之间)时,我无法使用休眠条件查询大于和小于操作获得正确的结果。
使用的代码
crit.add(Restrictions.gt("notificationDate",notificationVO.getNotificationDate()));
限制将根据条件而变化
仅比较日期,Hibernate中是否有任何可用的功能?
还有其他想法可以解决此问题吗?
从您的评论中:
如果用户输入 2012-09-26并且搜索条件小于,我需要所有小于 2012-09-26 的日期
那么限制应该是:
crit.add(Restrictions.lt("notificationDate", notificationVO.getNotificationDate()));
如果用户输入相同的日期,并且搜索条件为"大于",则使用以下限制:
crit.add(Restrictions.gt("notificationDate", notificationVO.getNotificationDate()));
当然,您将获得日期和时间大于 2012-09-26 00:00:00 的所有条目,当然包括 2012-09-26 日期的所有条目。