我有一个表格,其中包含我们使用Hibernate,MySql
的一些varchars列。
当MySQL将N
与Ñ
进行比较并匹配时出现问题我似乎在其他MYSQL
的{{1}}中有解决方案
SO post
和
SELECT FIRST_NAME
FROM CONTACT
WHERE FIRST_NAME LIKE '%ñ%' COLLATE utf8_spanish_ci
我想知道如何通过查询基础在SELECT FIRST_NAME FROM CONTACT WHERE FIRST_NAME LIKE BINARY '%ñ%'
中执行此操作。我的意思是编写一个与Hibernate
和N
不匹配的标准,而不需要在引擎Ñ
上执行此操作MySQL
1}}这可能就像使用BINARY
或在COLLATE
中使用Hibernate
作为参数或任何其他解决方法一样。
更新
我试过这段代码
private final Student test(final int id)
{
return (Student)currentSession().createCriteria(Student.class)
.add(Restrictions.idEq(id))
.add(Restrictions.ilike("c01","n",MatchMode.ANYWHERE))
.uniqueResult();
}
我的表格有a row with id=26 and c01='ñlk'
我在hibernate.cfg
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/database?connectionCollation=utf8_spanish_ci</property>
我用
测试代码 final Student student = clazz.test(26);
System.out.println("results: "+(student==null?"NULO":("ID: "+student.getId()+" c01: "+student.getC01())));
但仍在返回结果..
results: ID: 26 c01: ñlk
我希望不会返回结果,但仍在考虑N
和Ñ
等于。
我做错了什么..
非常感谢任何帮助非常感谢..
最好的问候。答案 0 :(得分:2)
您可以尝试在jdbc连接级别设置排序规则。 在您定义连接URL的位置:
JDBC:MySQL的://:[?propertyName1] [主机端口] / [数据库] [= propertyValue1]
尝试此属性:connectionCollation = utf8_spanish_ci
http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
我希望能提供帮助。