java criteria日期比较

时间:2015-01-28 16:13:52

标签: java date java-ee criteria

我正在使用条件对象过滤搜索。 但过滤器不适用于日期。 我做了这个例子:

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

您是否有任何想法按日期过滤?

2 个答案:

答案 0 :(得分:0)

您的代码/方法看起来很好。您可能希望启用SQL日志记录以查看确切发送到DB的语句以及绑定到语句参数的值。这应该可以帮助您找出问题(问题可能只是一些细节,例如有/无时间部分的日期,或类似的东西)。

另见:

Hibernate show real SQL

答案 1 :(得分:0)

要搜索我使用的确切日期:

criteria.add(Restrictions.eq("installDate", device.getInstallDate()));

另请注意,基于相应的SQL类型,底层数据库会以不同方式处理日期和时间戳。声明为日期的字段不包括小时/分钟/等。如果希望比较日期和时间,请确保在Hibernate声明中使用时间戳。

显示SQL语句的最快方法是在Hibernate配置中将show_sql属性设置为true