Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189329
  • 博文数量: 92
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1413
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-04 21:12
文章分类
文章存档

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); 至此便可以结束中文的正确排序。  
阅读(501) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~