首頁 > 資料庫 > mysql教程 > 如何在 Hibernate 本機查詢中使用 MySQL 賦值運算子 (:=)?

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

Mary-Kate Olsen
發布: 2024-11-03 16:04:02
原創
437 人瀏覽過

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

Hibernate 本機查詢中的MySQL 賦值運算子

使用Hibernate 時,您可能會遇到需要在本機中使用subselect 語句的情況。本機查詢可讓您使用自己的語法直接與底層資料庫互動。

但是,嘗試在Hibernate 內的本機查詢中使用MySQL 賦值運算符(:=) 可能會導致異常:“Space is參數前綴“:”後不允許使用......” 。這是由於 Hibernate 的一個已知問題 (HHH-2697) 造成的。

解決方案

幸運的是,Hibernate 4.1.3 及更高版本已經解決了這個問題。若要在本機查詢中使用 MySQL 指派運算符,您現在可以使用反斜線 () 來轉義。

例如,考慮以下本機查詢:

<code class="sql">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</code>
登入後複製

要執行此查詢在Hibernate 中,使用以下程式碼:

<code class="java">sessionFactory.getCurrentSession()
    .createSQLQuery(query)
    .setParameter("kid", kid)
    .uniqueResult();</code>
登入後複製

透過使用反斜線轉義賦值運算符,查詢將成功執行。

以上是如何在 Hibernate 本機查詢中使用 MySQL 賦值運算子 (:=)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板