在 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中文网其他相关文章!