Java Hibernate MySQL - 等于n

时间:2014-10-30 21:37:25

标签: java mysql hibernate utf

我有一个表格,其中包含我们使用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 '%ñ%' 中执行此操作。我的意思是编写一个与HibernateN不匹配的标准,而不需要在引擎Ñ上执行此操作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Ñ等于。

我做错了什么..

非常感谢任何帮助非常感谢..

最好的问候。

1 个答案:

答案 0 :(得分:2)

您可以尝试在jdbc连接级别设置排序规则。 在您定义连接URL的位置:

JDBC:MySQL的://:[?propertyName1] [主机端口] / [数据库] [= propertyValue1]

尝试此属性:connectionCollat​​ion = utf8_spanish_ci

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

我希望能提供帮助。