使用Hibernate查询:冒号被当作参数/转义冒号

return sessionFactory.getCurrentSession().

createQuery("FROM Weather WHERE city_id = :id AND date " +

"BETWEEN now()::date AND now()::date + (:days - 1)").

setInteger("id", city_id).setString("days", days).list();

出现错误:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: :

如何在HQL中使用此语法?

基本上问题是我想在查询中使用冒号(:),但是当hibernate看到冒号时,它认为这是一个参数(:parameterName是HQL中参数的语法),正如您从我的2个uses中可以看到的(:id

and :days)。

但是,当我使用now():: date语句时,它是特定的postgreSQL语法,因此hibernate会破坏所有内容。

回答:

由于您使用的是Postgres,因此我将完全更改date():

return sessionFactory.getCurrentSession().

createQuery("FROM Weather WHERE city_id = :id AND date " +

"BETWEEN current_date AND (current_date + (integer :days - 1))").

setInteger("id", city_id).setString("days", days).list();

参见http://www.postgresql.org/docs/8.2/static/functions-

datetime.html

以上是 使用Hibernate查询:冒号被当作参数/转义冒号 的全部内容, 来源链接: utcz.com/qa/400804.html

回到顶部