Maison > base de données > tutoriel mysql > Comment échapper à l'opérateur d'affectation MySQL (:=) dans les requêtes natives Hibernate ?

Comment échapper à l'opérateur d'affectation MySQL (:=) dans les requêtes natives Hibernate ?

Susan Sarandon
Libérer: 2024-11-02 05:30:29
original
597 Les gens l'ont consulté

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

Échapper à l'opérateur MySQL Assign (=) dans les requêtes natives Hibernate

Lorsque vous travaillez avec des requêtes natives Hibernate, il est possible de rencontrer des erreurs lors de l'utilisation l'opérateur d'affectation MySQL (:=) en raison de l'espace qui suit les deux points (:). Ce problème est particulièrement évident dans les cas où des instructions de sous-sélection sont nécessaires.

Le code fourni illustre ceci :

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
Copier après la connexion

L'exécution de cette requête à l'aide de setParameter entraîne une exception mettant en évidence l'espace erroné après les deux points. .

Heureusement, Hibernate propose désormais une solution à ce problème. Dans Hibernate 4.1.3 et versions ultérieures, vous pouvez échapper à l'opérateur d'affectation à l'aide d'une barre oblique inverse (), comme indiqué ci-dessous :

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
Copier après la connexion

En échappant les deux points, Hibernate interprète avec succès la syntaxe, vous permettant d'exécuter des requêtes de sous-sélection. efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal