当我想检查用户名并检索此特定用户名的其他信息时,我有具有 utf8 字符集和 utf8 排序规则的登录表,hql 查询给我与小写和大写相同的结果。我应该为我的 HQL 查询做些什么,我使用 Mysql 5 和 java hibernarte
这是我的查询:
return queryManager.executeQueryUniqueResult("select b.login from BranchEntity b where b.userName = ?", username);
当我想检查用户名并检索此特定用户名的其他信息时,我有具有 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");
这将使所有查询都区分大小写,从而更有意义。