2011-11-28 1 views
0

Dans la requête EJB, il est recommandé d'utiliser setParameters() au lieu de concaténer les paramètres de chaîne afin d'éviter les attaques par injection SQL.Comment définir les paramètres dans '' dans la requête EJB

Ma question est: comment définir les paramètres dans « » dans les états de mise à jour SQL avec « SET »:

String basicQuery = "update some table set somecolumn = ':para'"; 
Query query = em.createQuery(basicQuery); 
query.setParameters("para", someString); 

Le temps d'exécution se plaint qu'il ne peut pas localiser le paramètre « para ». Toute solution de contournement est appréciée.

Répondre

0

Supprimez les guillemets simples autour de :para.

+0

Cette réponse aurait été juste | _ | cela vaut beaucoup mieux si vous aviez dit: «Les guillemets ne sont pas nécessaires lors de l'utilisation de paramètres nommés et interfèrent avec la syntaxe» par opposition à simplement dire «les supprimer». –

+0

manque de guillemets causera l'erreur de syntaxe sql – Wangge

+0

Non ce ne sera pas - vous n'écrivez pas SQL. Vous écrivez EJBQL (ou JPAQL) qui est une abstraction. ': para' est la syntaxe d'un paramètre nommé (nommé" para ") et' setParameter' prend le nom et la valeur, et l'implémentation JPA désinfectera l'entrée, ajoutera des guillemets, etc. –

Questions connexes