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
562 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!

source:php.cn
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