我正在使用条件对象过滤搜索。 但过滤器不适用于日期。 我做了这个例子:
criteria.add(Restrictions.and(
Restrictions.like("serialNumber", device.getSerialNumber()),
Restrictions.like("installDate", device.getInstallDate()), // a date
Restrictions.like("ipAdress", device.getIpAdress())));
然后我做了这个:
else if (device.getInstallDate() != null) {
criteria.add(Restrictions.like("installDate", device.getInstallDate()));
}
您是否有任何想法按日期过滤?
答案 0 :(得分:0)
您的代码/方法看起来很好。您可能希望启用SQL日志记录以查看确切发送到DB的语句以及绑定到语句参数的值。这应该可以帮助您找出问题(问题可能只是一些细节,例如有/无时间部分的日期,或类似的东西)。
另见:
答案 1 :(得分:0)
要搜索我使用的确切日期:
criteria.add(Restrictions.eq("installDate", device.getInstallDate()));
另请注意,基于相应的SQL类型,底层数据库会以不同方式处理日期和时间戳。声明为日期的字段不包括小时/分钟/等。如果希望比较日期和时间,请确保在Hibernate声明中使用时间戳。
显示SQL语句的最快方法是在Hibernate配置中将show_sql
属性设置为true