gpt4 book ai didi

java - 使用 hibernate 查询 : colon gets treated as parameter/escaping colon

转载 作者:IT老高 更新时间:2023-10-28 13:49:04 26 4
gpt4 key购买 nike

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 次使用(:id 和 :days)。

但是当我使用 now()::date 语句时,它是特定的 postgreSQL 语法, hibernate 会破坏一切。

最佳答案

我刚遇到这个问题,不得不使用类型转换,所以我尝试了一些东西来让它工作。原来你逃脱了:在 hibernate 中 \

但是,在 java 中,要打印 \ 开始,您必须使用 \ 对其进行转义。
所以,如果你想在你的 SQL hibernate 查询中放一个 :,你必须这样写: \\:

如果你想在 PostgreSQL 中进行转换,例如在我的情况下,你必须,例如: field\\:\\:int 如果你想将某个字段转换为整数。

关于java - 使用 hibernate 查询 : colon gets treated as parameter/escaping colon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7475876/

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