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); 至此便可以结束中文的正确排序。