2010-04-29 6 views
3

0 vote starsComment vérifier les majuscules et les minuscules dans les critères de mise en veille prolongée

Je l'ai utilisé Mise en veille prolongée pour aller chercher les informations de connexion à partir de la base de données MySQL. Mais le problème est que, par exemple, le nom d'utilisateur est 'dhiraj' dans la base de données, maintenant la connexion est réussie en entrant le nom d'utilisateur, mais il permet également d'entrer en prenant le nom d'utilisateur en majuscule, par exemple, 'DHIRAJ '. Je veux le limiter comme dans la base de données. Pouvez-vous me dire comment y parvenir en hibernation?

+0

J'utilise le code suivant, mais il ne vérifie pas la casse sensible. Restricted_User user = (Utilisateur_utilisé) session.createCriteria (Restricted_User.class) .add (Restrictions.eq ("id_utilisateur", input.get ("nom_utilisateur"))) .add (Restrictions.eq ("mot de passe", entrée .get ("mot de passe"))) \t \t .uniqueResult(); – dhiraj

Répondre

1

Je ne pense pas que l'hibernation est la question ici.

Quelle base de données utilisez-vous? (vous devez retag votre question pour ajouter au moins l'implémentation db que vous utilisez). Par exemple, mysql ne fait pas de comparaison sensible à la casse par défaut. Par exemple, mysql ne fait pas de comparaison sensible à la casse. Regardez ici: http://mysqldatabaseadministration.blogspot.com/2006/09/case-sensitive-mysql.html sur la façon de faire mysql faire la comparaison sensible à la casse.

EDIT: comme dit dans le lien que j'ai collé, vous pouvez le faire à la création de la table, en définissant un ensemble de caractères spéciaux, comme ça:

########### 
# Start case sensitive collation example 
########### 

mysql> create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs; 
Query OK, 0 rows affected (0.08 sec) 

mysql> INSERT INTO case_cs_test VALUES ('Frank'),('Google'),('froogle'),('flickr'),('FlicKr'); 
Query OK, 5 rows affected (0.00 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> SELECT * FROM case_cs_test WHERE word LIKE 'F%'; 
+---------+ 
| word | 
+---------+ 
| Frank | 
| FlicKr | 
+---------+ 
4 rows in set (0.00 sec) 

mysql> SELECT * FROM case_cs_test WHERE word LIKE 'f%'; 
+---------+ 
| word | 
+---------+ 
| froogle | 
| flickr | 
+---------+ 
2 rows in set (0.00 sec) 

########### 
# end 
########### 
+0

Ya J'utilise la base de données mysql seulement et je n'ai trouvé aucun moyen d'atteindre le problème sensible à la casse, en fait j'ai d'abord pensé qu'il s'agissait d'un problème d'hibernation, mais comme vous l'avez souligné, mysql. Maintenant pouvez-vous me dire au niveau de la base de données comment pouvons-nous vérifier cela? – dhiraj

+0

Pouvez-vous me dire si je peux mettre ceci au niveau mysql de sorte que le hibernate sélectionne toujours la colonne user_id de la table d'utilisateur comme sensible à la casse seulement? – dhiraj

+0

J'ai édité ma réponse. – Thierry

Questions connexes