针对utf8的MYSQL区分大小写搜索(使用hibernate)

时间:2009-08-10 16:57:21

标签: mysql login hql case-sensitive

当我想检查用户名并检索此特定用户名的其他信息时,我的登录表有utf8字符集和utf8排序规则,hql查询给出了与小写和大写相同的结果。 我应该为我的HQL查询做什么工作案例sesitive 我使用Mysql 5和java hibernarte

这是我的疑问:

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

2 个答案:

答案 0 :(得分:5)

最简单的方法是将列的定义更改为使用不区分大小写的排序规则,例如utf8_bin

详情为here

答案 1 :(得分:2)

添加课程

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

并使用它:

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

这将使所有查询区分大小写,从而更加明确。