2009-08-10 25 views
2

Ich habe Login-Tabelle, die utf8 Zeichensatz und utf8 Kollatierung, wenn ich Benutzernamen überprüfen und andere Informationen für diesen spezifischen Benutzernamen abrufen die hql Abfrage geben Sie mir das gleiche Ergebnis mit Kleinbuchstaben und Großbuchstaben. was soll ich für meine HQL Abfrage tun, den Fall ich Mysql 5 verwenden und Java hibernarteMYSQL case sensitive Suche (mit Ruhezustand) für utf8

das ist meine Abfrage sesitive arbeiten: verwenden Fall-

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

Antwort

5

Der einfachste Weg ist, um Ihre Spalte Definition zu ändern Insensitive Sortierung wie utf8_bin.

Einzelheiten sind here

+0

scheint es Arbeit für mich, aber muss mehr testen, tanx, wenn es gut geht, markierte ich es. – Am1rr3zA

2

Add Klasse

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

und es verwenden:

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

dies wird alle Anfragen Groß- und machen, dass viel mehr Sinn macht.

+0

Dies scheint die Spaltennamen auch Groß- und Kleinschreibung zu beachten. Aber Hibernate kann damit leben und ich kann es auch. – maaartinus