Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
grails或hibernate仅按时间组件搜索的条件_Hibernate_Grails_Gorm_Hibernate Criteria - Fatal编程技术网

grails或hibernate仅按时间组件搜索的条件

grails或hibernate仅按时间组件搜索的条件,hibernate,grails,gorm,hibernate-criteria,Hibernate,Grails,Gorm,Hibernate Criteria,下面给出的是我的域对象 Game { Date startDate } 现在,我只想搜索在早上hh:mm AM开始的游戏动态搜索,无论日期如何。我正在寻找类似这样的Grails标准 Game.where { startDate.timePart == timeValue }.list() 其中timeValue=上午10:30或类似的时间 我使用Hibernate标准是因为GORM中不支持一些自定义限制,所以如果有人知道如何使用Hibernate标准,那就太好了 现在这就是我

下面给出的是我的域对象

Game {
    Date startDate
}
现在,我只想搜索在早上hh:mm AM开始的游戏动态搜索,无论日期如何。我正在寻找类似这样的Grails标准

Game.where {
    startDate.timePart == timeValue
}.list()
其中timeValue=上午10:30或类似的时间

我使用Hibernate标准是因为GORM中不支持一些自定义限制,所以如果有人知道如何使用Hibernate标准,那就太好了

现在这就是我在Hibernate标准中尝试做的,但它不起作用,我正在使用postgre

searchCriteria.add(Restrictions.sqlRestriction("to_timestamp(start_date, 'h:mm a') = ? ", timeValue, StandardBasicTypes.DATE))

非常感谢您的帮助。

您可以使用HibernateCriteriaBuilder。 可以通过Grails域类的createCriteria动态静态方法检索生成器:

   def c = Game.createCriteria()
   def results = c {
     eq("start_date",timeValue)
   }
构建器也可以通过SessionFactory和持久类实例单独实例化:

  new HibernateCriteriaBuilder(clazz, sessionFactory).list {
     eq("start_date", timeValue)
  }

您可以获得只有时间的日期实例,并在Hibernate Criteria API中使用该实例进行查询


@法希玛-非常感谢您的回复。如果我尝试使用您提供的实现,那么grails标准将尝试匹配开始日期作为日期。我想要的是,只比较时间成分。从GUI中,用户将输入类似上午10:30的信息,我必须列出所有游戏此时开始,而不管日期如何。如果我仅创建带有时间的日期实例,它将不起作用,因为startDate是保存在数据库中的时间戳,仅将其与时间进行比较不会返回预期结果。