首頁  >  文章  >  資料庫  >  如何在 Hibernate 本機查詢中轉義 MySQL 賦值運算子 (:=)?

如何在 Hibernate 本機查詢中轉義 MySQL 賦值運算子 (:=)?

Susan Sarandon
Susan Sarandon原創
2024-11-02 05:30:29506瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn