2

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

这是我的查询:

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

2 回答 2

6

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

详情在这里

于 2009-08-10T17:06:07.403 回答
2

添加类

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

并使用它:

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

这将使所有查询都区分大小写,从而更有意义。

于 2012-11-25T13:50:23.437 回答