如何在 Hibernate 本机查询中转义 MySQL 赋值运算符 (:=)?

Susan Sarandon
发布: 2024-11-02 05:30:29
原创
510 人浏览过

How to Escape the MySQL Assign Operator (:=) in Hibernate Native Queries?

在 Hibernate 本机查询中转义 MySQL 赋值 (=) 运算符

使用 Hibernate 本机查询时,可能会遇到错误MySQL 赋值运算符 (:=) 由于冒号 (:) 后面有空格。在需要子选择语句的情况下,此问题尤其明显。

提供的代码说明了这一点:

SELECT sub.rownum FROM (SELECT k.news_master_id AS id, @row := @row + 1 AS rownum FROM keyword_news_list k JOIN (SELECT @row := 0) r WHERE k.keyword_news_id = :kid ORDER BY k.news_master_id ASC) AS sub WHERE sub.id = :nid
登录后复制

使用 setParameter 执行此查询会导致异常,突出显示冒号后的错误空格.

幸运的是,Hibernate 现在为这个问题提供了解决方案。在 Hibernate 4.1.3 及更高版本中,您可以使用反斜杠 () 转义赋值运算符,如下所示:

SELECT k.news_master_id AS id, @row \:= @row + 1 AS rownum FROM keyword_news_list k JOIN (SELECT @row \:= 0) r WHERE k.keyword_news_id = :kid ORDER BY k.news_master_id ASC
登录后复制

通过转义冒号,Hibernate 成功解释语法,允许您执行子选择查询有效。

以上是如何在 Hibernate 本机查询中转义 MySQL 赋值运算符 (:=)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板