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

Susan Sarandon
リリース: 2024-11-02 05:30:29
オリジナル
470 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!