使用SSH框架开发项目,遇到使用HQL语句从MySQL数据库中查询数据不能按照中文字段排序的问题。
发现问题:mysql数据库使用字符集为utf-8,查询出来的中文根本不是按照拼音排序的。
经过搜索,找到以下有用资料:
1. http://my.oschina.net/u/999578/blog/150392 很好,使用createSQLQuery可以解决问题。
2. http://www.blogjava.net/rain1102/archive/2009/02/23/256344.html 不错,找到模板参考。
我最终写的代码:
String queryString = "SELECT * from Zylibzy order by CONVERT(zyxwmc USING GB2312)";
/**
* 加载所有学术型专业
* @param queryString
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public List loadAllZyXs(final String queryString) {
try {
return (List)getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(Session session) throws HibernateException, SQLException {
List list = session.createSQLQuery(queryString).addEntity(Zylibxs.class).list();
return list;
}
});
} catch (Exception e) {
// TODO: handle exception
return null;
}
}
测试成功!