Maison > base de données > tutoriel mysql > Comment échapper aux caractères spéciaux dans les requêtes natives JPA ?

Comment échapper aux caractères spéciaux dans les requêtes natives JPA ?

Barbara Streisand
Libérer: 2024-11-07 15:41:03
original
535 Les gens l'ont consulté

How to Escape Special Characters in JPA Native Queries?

Échappement des caractères spéciaux dans les requêtes natives JPA

Lors de la construction de requêtes SQL natives dans l'API de persistance Java (JPA), les caractères spéciaux peuvent provoquer des problèmes d'analyse . L'un de ces caractères est le deux-points (':'), qui est couramment utilisé dans les variables utilisateur MySQL.

Le défi : échapper aux deux points dans les variables utilisateur MySQL

Pour Par exemple, considérons la requête suivante :

SELECT foo, bar, baz,
    @rownum:= if (@id = foo, @rownum+1, 1) as rownum,
    @id    := foo                         as rep_id
FROM
    foo_table
ORDER BY
    foo,
    bar desc
Copier après la connexion

Pour exécuter cette requête à l'aide de la méthode createNativeQuery de JPA, nous rencontrerions une exception en raison de l'espace qui suit les deux points dans le @rownum assign.

La solution : échapper aux deux points à l'aide de barres obliques inverses

Pour échapper au caractère deux-points, nous devons le préfixer avec une barre oblique inverse (). Dans l'exemple ci-dessus, nous modifierions la requête comme suit :

SELECT foo, bar, baz,
    @\rownum:= if (@id = foo, @\rownum+1, 1) as rownum,
    @\id    := foo                         as rep_id
FROM
    foo_table
ORDER BY
    foo,
    bar desc
Copier après la connexion

En échappant les deux-points, JPA analysera correctement la requête et permettra son exécution. Notez que cette technique d'échappement s'applique non seulement aux deux-points dans les variables utilisateur MySQL, mais également à tous les caractères spéciaux susceptibles d'interférer avec l'analyse des requêtes JPA.

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