我相信熟悉 HQL 的人(我自己是新手)可以轻松回答这个问题。
在我的 Grails 应用程序中,我有以下域类。
class Book {
org.joda.time.DateTime releaseDate //I use the PersistentDateTime for persisting via Hibernate (that use a DATETIME type for MySQL DB)
}
在我的 HQL 查询中,我想检索其发行日期包含在 range date1
..date2
例如我试过:
DateTime date1, date2
...
def queryStr = "select * from Book as b where b.releaseDate > $date1 and b.releaseDate < $date2"
def res = Book.executeQuery(queryStr)
但我得到了异常...caused by: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token:
错误标记指向日期格式(例如2009-11-27T21:57:18.010+01:00
或Fri Nov 27 22:01:20 CET 2009
)
我也尝试将 date1 转换为 Date 类但没有成功
那么正确的 HQL 代码是什么?我应该使用 patternForStyle 方法转换为特定格式(哪一种?)还是有另一种 -cleaner- 方法来做到这一点?
谢谢,
法比安。