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