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);
È stato utile?

Soluzione

Il modo più semplice è quello di cambiare la definizione di colonna per utilizzare il confronto maiuscole e minuscole come utf8_bin.

qui

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
scroll top