2013年(92)
分类: 信息化
2013-03-24 05:34:25
mysql在utf8编码格式下的中文排序会出现疑问,因为现在用的是hql查询,不支持原生sql函数convert。有用的一种解决方法如下: (1)新建一个类,派生自MySQL5Dialect public class MyISAMDialect extends MySQL5Dialect {
public MyISAMDialect(){
super();
registerFunct ion("convert_mine", new SQLFunctionTemplate(StandardBasicTypes.STRING, "convert(?1 using gbk)"));
}
@Override
public String getTableTypeString() {
return "engine=MyISAM";
}
}其间需要注重的是,在hibernate4版别中,运用StandardBasicTypes.STRING(来自包org.hibernate.type.StandardBasicTypes;)而不是Hibernate.STRING. (2)在配置文件中引用或改为此类:
//...
// ...
com.miniwork.mymanager.util.MyISAMDialect //...
//...
正本的hibernate.dialect可以是设置为org.hibernate.dialect.MySQLDialect,即自定义类MyISAMDialect的超类。 (3)在运用hql查询句子时,在可以出现中文的列中例如name,可以这样运用: from xxx order by convert_mine(name); 至此便可以结束中文的正确排序。