Поиск в MYSQL с учетом регистра (с использованием гибернации) для utf8
-
12-09-2019 - |
Вопрос
У меня есть таблица входа в систему, которая имеет кодировку utf8 и параметры сортировки utf8, когда я хочу проверить имя пользователя и получить другую информацию для этого конкретного имени пользователя, запрос hql дает мне тот же результат со строчными и прописными буквами.что я должен сделать для моего запроса HQL, который работает в предварительном порядке Я использую Mysql 5 и java hibernarte
это мой запрос:
return queryManager.executeQueryUniqueResult("select b.login from BranchEntity b where b.userName = ?", username);
Решение
Самый простой способ - изменить определение вашего столбца, чтобы использовать параметры сортировки без учета регистра, например utf8_bin
.
Детали таковы здесь
Другие советы
Добавить класс
public class CollateDialect extends MySQLDialect {
@Override
public String getTableTypeString() {
return " COLLATE utf8_bin";
}
}
и используй это:
cfg.setProperty("hibernate.dialect", "org.kriyak.hbm.CollateDialect");
это сделает все запросы чувствительными к регистру, что принесет гораздо больше пользы.
Не связан с StackOverflow