比较Hibernate中datetime字段的时间部分
时间:2020-03-06 14:25:47 来源:igfitidea点击:
我有一个将休眠(注释)/ mysql组合用于ORM的应用程序。在该应用程序中,我得到了一个带有"日期"字段的实体。我正在寻找一种在时间范围内选择该日期的方法(因此hh:mm:ss不包含日期部分)。
在MySQL中,有一个函数TIME(expression)可以提取时间部分并在where子句中使用它,但是如果不切换到本地查询,Hibernate中似乎不可用。休眠中是否可以执行此操作,还是我应该遍历Java中的结果并在那里进行比较?这会比MySQL解决方案慢很多吗,因为它还是不会使用索引?
解决方案
HQL中提供以下功能,也许我们可以使用它们:
秒(...),分钟(...),小时(...),日期(...),月份(...),年份(...)`
将表达式添加为SQL限制,而不要使用完整的本机查询。我不特别了解MySQL,但可以想象这样的事情:
Criteria criteria = session.createCriteria(MyTable.class); criteria.add( Expression.sql( "TIME( {alias}.my_date, 'hh:mm:ss') >= :1", dateRangeMin, new StringType() ) );