当前位置: 首页 > 面试题库 >

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

督烨赫
2023-03-14
问题内容
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



 类似资料:
  • 问题内容: 我有一个本机SQL查询,如下所示: 问题是,Hibernate的解释,,作为参数,并希望我们给值,, 但是我不想让Hibernate这样解释,所以我想逃避冒号。 怎么做 ? 问题答案: 在Hibernate中,转义以开头。但是在Java中,您还必须逃脱另一个。因此,所有内容都需要替换为。最后,您得到:

  • 我注意到Java的没有对查询参数值(ISO 8601格式的字符串)中包含的字符进行编码。 根据维基百科,冒号似乎应该被编码。 具体而言,对查询字符串进行编码时使用以下规则: null 那么,怎么回事?查询参数中的冒号是否应该编码? 更新: 我查阅了URI语法规范(RFC3986),看起来在查询参数中编码冒号真的没有必要。以下是ABNF for URI的摘录:

  • 问题内容: 我需要在我的应用程序中解析环境变量。所以我想知道在中哪些转义字符有效。我创建了一个测试目录,并在其中创建了一个测试脚本 。如果我用绝对路径调用它,它将运行。我只是想不通如何转义,因为我尝试用冒号转义并将其包装为单引号和双引号。但总是在我运行时找不到它。我正在运行CentOS 6。 问题答案: 根据POSIX标准,这是不可能的。这不是特定Shell的功能,PATH处理是在C库的execv

  • 主要内容:示例冒号()是MATLAB中最有用的操作符之一。它用于创建向量,下标数组,并为迭代指定。 如果要创建一个包含从到的整数的行向量,则书写为 - MATLAB执行语句并返回一个包含整数的行向量,从到 - 如果要指定一个增量值,例如 - MATLAB执行语句并返回以下结果 - 再来看看一个例子 - MATLAB执行语句并返回以下结果 - 可以使用冒号运算符创建索引向量,以选择数组的行,列或元素。 下表描述了

  • 冒号:是MATLAB里面一个十分重要的算子,适用于各种不同的表达式。 例如表达式   1:10 表示一行从1到10的整数 1 2 3 4 5 6 7 8 9 10 为了改变递变的间隔,可以指定一个间隔长度 ,例如   100:-7:50 表示为 100 93 86 79 72 65

  • 问题内容: 由于IE7和IE8不支持对伪元素(例如或)使用双冒号表示法,并且由于现代浏览器支持向后兼容的单冒号(例如),我应该仅使用单冒号表示法以及何时使用IE8的市场份额下降到可以忽略的水平,然后回去查找/替换我的代码库?还是我都应该同时包括: 如果我关心IE8用户(可怜的朋友),单独使用double似乎很愚蠢。 问题答案: 请勿 同时 使用逗号和逗号。兼容CSS 2.1(不支持CSS3)的用户