gpt4 book ai didi

hibernate - 如何使用 Joda Time 查询 HQL (Hibernate) 中的日期?

转载 作者:行者123 更新时间:2023-12-02 13:45:38 26 4
gpt4 key购买 nike

我相信熟悉 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 查询中,我想检索发行日期包含在 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)

但我得到了异常(exception) ...caused by: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token:错误标记指向日期格式(例如 2009-11-27T21:57:18.010+01:00Fri Nov 27 22:01:20 CET 2009 )

我也尝试将 date1 转换为 Date 类但没有成功

那么正确的 HQL 代码是什么?我应该使用 patternForStyle 方法转换为特定格式(哪一种?)还是有另一种 -cleaner- 方法来做到这一点?

谢谢,

法比安。

最佳答案

我不是 Grails 专家,但在 java 中你通常会使用 date1date2查询参数并将它们绑定(bind)如下:

String hql = "select * from Book as b where b.releaseDate > :date1 and b.releaseDate < :date2";
session.createQuery(hql).setDate("date1", date1).setDate("date2", date2).list();

我相信你可以在 Grails 中做类似的事情。如果没有,请将日期格式设置为 yyyyMMddhhmmss (没有空格)并将它们括在单引号中 - 这样 Hibernate 会将它们视为常量,而 MySQL 会将它们隐式转换为日期。

关于hibernate - 如何使用 Joda Time 查询 HQL (Hibernate) 中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1849897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com