2009-08-10 7 views
2

J'ai Table de connexion qui ont le classement utf8 charset et utf8 quand je veux vérifier le nom d'utilisateur et récupérer d'autres informations pour ce nom d'utilisateur spécifique la requête hql me donner le même résultat en minuscules et majuscule. ce qui devrait je faire pour ma requête HQL qui fonctionnent cas sesitive Je Majeures 5 et java hibernarteMYSQL recherche sensible à la casse (en utilisant hibernate) pour utf8

ceci est ma requête:

return queryManager.executeQueryUniqueResult("select b.login from BranchEntity b where b.userName = ?", username); 

Répondre

5

La façon la plus simple est de changer la définition de votre colonne à utiliser Case- collation insensible comme utf8_bin.

Détails sont here

+0

cela semble fonctionner pour moi mais doit tester plus, tanx si ça marche bien je l'ai marqué. – Am1rr3zA

2

Ajouter une classe

public class CollateDialect extends MySQLDialect { 
    @Override 
    public String getTableTypeString() { 
     return " COLLATE utf8_bin"; 
    } 
} 

et l'utiliser:

cfg.setProperty("hibernate.dialect", "org.kriyak.hbm.CollateDialect"); 

cela fera toutes les requêtes sensibles à la casse qui le rend beaucoup plus sence.

+0

Cela semble également rendre les noms de colonne sensibles à la casse. Mais Hibernate peut vivre avec et moi aussi. – maaartinus

Questions connexes