ホームページ  >  記事  >  データベース  >  Hibernate ネイティブ クエリで MySQL の代入演算子 (:=) をエスケープする方法は?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 05:30:29471ブラウズ

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

Hibernate ネイティブ クエリでの MySQL Assign (=) 演算子のエスケープ

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 中国語 Web サイトの他の関連記事を参照してください。

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