MYSQL caso di ricerca sensibili (usando Hibernate) per utf8
-
12-09-2019 - |
Domanda
Ho Accedi tabella che ha utf8 charset utf8 e fascicolazione quando voglio controllare il nome utente e recuperare altre informazioni per questo nome utente specifico la query HQL mi danno lo stesso risultato con lettere minuscole e maiuscole. cosa dovrebbe fare l per la mia interrogazione HQL che funzionano caso sesitive Io uso MySQL 5 e Java hibernarte
Questa è la mia domanda:
return queryManager.executeQueryUniqueResult("select b.login from BranchEntity b where b.userName = ?", username);
Soluzione
Il modo più semplice è quello di cambiare la definizione di colonna per utilizzare il confronto maiuscole e minuscole come utf8_bin
.
Altri suggerimenti
Aggiungi classe
public class CollateDialect extends MySQLDialect {
@Override
public String getTableTypeString() {
return " COLLATE utf8_bin";
}
}
e usarlo:
cfg.setProperty("hibernate.dialect", "org.kriyak.hbm.CollateDialect");
questo renderà tutte le query-case sensitive che rende molto più sence.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow