如何在Hibernate中对中文列进行排序?

时间:2013-11-26 04:51:31

标签: sql hibernate sorting hql chinese-locale

当我使用Hibernate对中文列的客户列表进行排序时遇到了问题,首先,我试图通过简单的HQL对它们进行排序:

String hql = "FROM CUSTOMER ORDER BY name DESC";

我发现检索到的列表不符合我们的要求,我想用26个字母的法术对它们进行排序,然后我用谷歌搜索解决方案,它可以通过 SQL 来解决,如:

String sql = "SELECT * FROM customer ORDER BY convert(name using gbk) DESC";

我在MySQL命令行上发布了它并且它选择了正确的排序结果,但是现在它仍然没有解决我的问题,因为它在Hibernate中不起作用而我只想使用Hibernate( HQL )查询,有没有办法做到这一点?或者我必须开发一种新的数据库方言来解决它吗?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用它,它也适用于你,对我有用!

SELECT * FROM customer  WHERE CONVERT(name USING gb2312) > '明'; 
SELECT * FROM customer ORDER BY CONVERT(name USING gb2312); 
  

后者隐含地使用gb2312_chinese_ci,但你可以命名   另一个也是那个字符集。