Java Hibernate MySQLñ;等于n
我有一个表,其中包含一些我们正在使用的varchars列Java Hibernate MySQLñ;等于n,java,mysql,hibernate,utf,Java,Mysql,Hibernate,Utf,我有一个表,其中包含一些我们正在使用的varchars列Hibernate,MySql 当MySQL将N与ini进行比较和匹配时,问题就出现了。我在MySQL的其他中找到了类似的解决方案 SELECT FIRST_NAME FROM CONTACT WHERE FIRST_NAME LIKE '%ñ%' COLLATE utf8_spanish_ci 及 我想知道如何在Hibernate中通过查询实现这一点。我的意思是编写一个不匹配N和ini的条件,而不在引擎MySQL上执行太多操作。这
Hibernate,MySql
当MySQL将N
与ini
进行比较和匹配时,问题就出现了。我在MySQL
的其他中找到了类似的解决方案
SELECT FIRST_NAME
FROM CONTACT
WHERE FIRST_NAME LIKE '%ñ%' COLLATE utf8_spanish_ci
及
我想知道如何在Hibernate
中通过查询实现这一点。我的意思是编写一个不匹配N
和ini
的条件,而不在引擎MySQL
上执行太多操作。这是否可能像在Hibernate
中使用BINARY
或COLLATE
作为参数或任何其他方法一样解决方法
更新
我尝试过这个代码
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();
}
我的表中有一行id=26,c01='ñlk'
我在hibernate.cfg
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/database?connectionCollation=utf8_spanish_ci</property>
但仍在取得成果
results: ID: 26 c01: ñlk
我不希望返回结果,但仍在考虑N
和ini
相等
我做错了什么
非常感谢,非常感谢你的帮助
致以问候。您可以尝试在jdbc连接级别设置排序规则。 在定义连接url的位置: jdbc:mysql://[host:port]/[database][?propertyName1][=propertyValue1] 尝试此属性:ConnectionCalation=utf8\u西班牙语\u ci
我希望对您有所帮助。我会尝试一下,我将它标记为已解决。谢谢。@chiperortiz我在MYSQL数据库中测试了它,但它没有用:(我认为唯一的方法是为选择添加排序规则。)
final Student student = clazz.test(26);
System.out.println("results: "+(student==null?"NULO":("ID: "+student.getId()+" c01: "+student.getC01())));
results: ID: 26 c01: ñlk