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

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

Mary-Kate Olsen
リリース: 2024-11-03 16:04:02
オリジナル
438 人が閲覧しました

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

Hibernate ネイティブ クエリの MySQL Assign 演算子

Hibernate を使用する場合、ネイティブ クエリで subselect ステートメントを使用する必要が生じる場合があります。ネイティブ クエリを使用すると、独自の構文を使用して基礎となるデータベースと直接やり取りできます。

ただし、Hibernate 内のネイティブ クエリで MySQL 割り当て演算子 (:=) を使用しようとすると、次の例外が発生する可能性があります。パラメータ接頭辞「:」の後には許可されません ....」。これは Hibernate の既知の問題 (HHH-2697) が原因です。

解決策

幸いなことに、Hibernate 4.1.3 以降のバージョンではこの問題が解決されています。ネイティブ クエリで MySQL の assign 演算子を使用する場合、バックスラッシュ () でエスケープできるようになりました。

たとえば、次のネイティブ クエリを考えてみましょう。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート