ホームページ >データベース >mysql チュートリアル >Hibernate ネイティブ クエリで MySQL の代入演算子 (:=) を使用する方法は?

Hibernate ネイティブ クエリで MySQL の代入演算子 (:=) を使用する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 00:36:29661ブラウズ

How to Use MySQL's Assignment Operator (:=) in Hibernate Native Queries?

Hibernate ネイティブ クエリでの MySQL 代入演算子 (=:) の使用

Hibernate で MySQL ネイティブ クエリを操作する場合、多くの場合、subselect ステートメントを利用する必要があります。ただし、これらのクエリで MySQL 代入演算子 (:=) を使用すると、「パラメータ プレフィックス ':' の後にスペースは許可されません」という例外が発生する可能性があります。

この問題は、Hibernate のパラメータ プレフィックス ':' の後の空白の制限に起因します。パラメータのプレフィックス。ただし、この特定のケースには解決策が存在します。

HHH-2697 の修正

4.1.3 より前の Hibernate バージョンでは、この問題の回避策はありませんでした。ただし、バグ HHH-2697 は以降のリリースで修正されました。

Hibernate 4.1.3 以降では、バックスラッシュ () を使用して代入演算子をエスケープできます。これにより、次の変更されたクエリを使用できるようになります:

<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 ネイティブ クエリで MySQL の代入演算子 (:=) を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。