Поиск в MYSQL с учетом регистра (с использованием гибернации) для utf8

StackOverflow https://stackoverflow.com/questions/1256001

Вопрос

У меня есть таблица входа в систему, которая имеет кодировку 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");

это сделает все запросы чувствительными к регистру, что принесет гораздо больше пользы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top