Postgres' at 时区在休眠中不起作用



Hibernate查询

SELECT l.submissionDate from Lead l where date(TIMESTAMP l.submissionDate AT TIME ZONE :userOffset) = date(:submissionDate)

正在投掷以下问题

11:08:13.248 [http-nio-8080-exec-5] ERROR o.h.hql.internal.ast.ErrorTracker - line 1:89: unexpected token: AT
antlr.NoViableAltException: unexpected token: AT

我看到了几个问题。首先,看来您正在使用createquery使用HQL/JPQL查询,并且在HQL中不支持AT TIME ZONE语法,因此您必须使用本机查询。意思是您必须使用所有内容的SQL本地名称而不是Java字段名称。

第二次比较WHERE子句中的两个用户通用参数是毫无意义的。我认为这不是:

date(TIMESTAMP '2018-03-31T21:45:00.000+0000' AT TIME ZONE :userOffset) = date(:submissionDate)

您的意思是:

date(l.submissionDate AT TIME ZONE :userOffset) = date(:submissionDate)

现在,添加更正,并假设您遵循常识命名约定,您的桌子和字段名称将转化为:

SELECT l.submission_date from lead l where date(l.submission_date AT TIME ZONE :userOffset) = :submissionDate

,您的提交参数必须是java.sql.Datejava.time.LocalDate,因此您不需要转换。

相关内容

  • 没有找到相关文章

最新更新