【问题标题】:jpql select query with where clause does not differentiate non english characters带有 where 子句的 jpql 选择查询不区分非英文字符
【发布时间】:2012-02-02 07:01:35
【问题描述】:

我正在使用休眠 jpa 3.6.7。我有一个存储国名的表,我有一个名为“Türkiye”的国家。我写了一个这样的查询:

Query query = em.createQuery("SELECT COUNT(c) FROM EntityCountry c WHERE c.countryName = :country").setParameter("country", "turkiye");
long result = (long)query.getSingleResult();

结果返回 1。我正在使用带有 utf8 排序规则的 mysql,我可以成功插入带有 jpa 的土耳其字符。但此查询不区分非英文字符和小写字母。请帮忙

【问题讨论】:

    标签: mysql hibernate jpa-2.0 jpql


    【解决方案1】:

    MySQL 有自己的区分大小写规则。字符串之间的比较不区分大小写,默认使用排序规则。为了使其不区分大小写,查询或列本身必须使用二进制排序规则。

    更多信息请参见http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

    【讨论】:

    • 再次感谢 JB Nizet。我将数据库和表的排序规则都更改为 utf8_bin 并重新启动了 mysql,但根据 mysql,'u' 和 'ü' 之间仍然没有区别。注意:实际上我不关心不区分大小写的比较
    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多