grails或hibernate条件只能按时间组件搜索

时间:2014-02-24 05:13:29

标签: hibernate grails gorm hibernate-criteria

以下是我的Domain对象。

Game {
    Date startDate
}

现在我想只搜索早上hh:mm AM(动态搜索)的游戏,无论日期如何。我正在寻找像这样的Grails标准

Game.where {
    startDate.timePart == timeValue
}.list()

timeValue =" 10:30 AM"或类似的东西。

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

现在这就是我在Hibernate Criteria中尝试做的事情,它不起作用(我正在使用postgre)。

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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用HibernateCriteriaBuilder。 可以通过Grails域类的“createCriteria()”动态静态方法检索构建器:

   def c = Game.createCriteria()
   def results = c {
     eq("start_date",timeValue)
   }

构建器也可以使用SessionFactory和持久化Class实例独立实例化:

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

答案 1 :(得分:0)

您可以只使用时间获取一个Date实例,并在Hibernate Criteria API中使用它来进行查询。

Compare date's date part only with Timestamp in Hibernate