JPA EntityManager 查找区分大小写的键
我正在尝试使用 JPA EntityManager find() 方法。 我的主键是一个与用户名相对应的字符串。
我正在使用 JPA / Hibernate / MYSQL。
我的问题是搜索用户“David”与用户“david”匹配,我认为是由于底层 MYSQL 中不区分大小写的字符串匹配。 这给我带来了一大堆问题!
有人对此有一个优雅的解决方案吗? 我可以执行本机 SQL 调用并使用 BINARY 运算符,如下所述: http://dev.mysql.com/doc/refman /5.0/en/charset-binary-op.html
有人有更好的解决方案吗? 塔。
I'm trying to use the JPA EntityManager find() method. My primary key is a string which corresponds to a user's name.
I am using JPA / Hibernate / MYSQL.
My problem is a search for user 'David' matches user 'david' due, I assume, to the case insensitive string matching in the underlying MYSQL. This causes me a whole heap of problems!!
Has anybody got an elegant solution to this? I could do a native SQL call and use the BINARY operator as documented here:
http://dev.mysql.com/doc/refman/5.0/en/charset-binary-op.html
Anyone got a better solution?
Ta.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以更改列类型使其不区分大小写吗? MySQL 指南 提供了有关如何执行此操作的信息。
这或多或少是您在 BINARY 运算符中发现的内容,但它适用于列类型,而不是当您运行 SELECT 时
Can you change the column type such that it is case insensitive? The MySQL guide has information on how to do so.
This is more or less what you found with the BINARY operator but it applies to the column type instead of when you run a SELECT
遇到了类似的问题。 您必须将表或整个数据库的排序规则设置为区分大小写的排序规则。
看:
参考手册 12.1.10 创建数据库语法 和
9.1.3.2。 数据库字符集和排序规则
Had a similar Problem. You have to set the collation of the table or of the whole database to one which is case-sensitive.
See:
Reference Manual 12.1.10 CREATE DATABASE SYNTAX and
9.1.3.2. Database Character Set and Collation