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

发布于 2024-08-01 22:02:22 字数 296 浏览 7 评论 0原文

我的登录表具有 utf8 字符集和 utf8 排序规则,当我想要检查用户名并检索该特定用户名的其他信息时,hql 查询会为我提供小写和大写相同的结果。 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hibernarte

这是我的查询:

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

I have Login Table that have utf8 charset and utf8 collation when I want check user name and retrieve other information for this specific user name the hql query give me the same result with lowercase and uppercase.
what should l do for my HQL query that work case sesitive
I use Mysql 5 and java hibernarte

this is my query:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无人问我粥可暖 2024-08-08 22:02:22

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

详细信息位于此处

The easiest way is to change your column's definition to use case-insensitive collation like utf8_bin.

Details are here

奈何桥上唱咆哮 2024-08-08 22:02:22

添加类

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

并使用它:

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

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

Add class

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

and use it:

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

this will make all queries case-sensitive that makes much more sence.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文