Mysql数据库下Hibernate按中文姓名排序
来源:互联网 发布:淘宝店2015年排名 编辑:程序博客网 时间:2024/05/18 17:23
项目使用的Mysql + Hibernate框架,最近用到了按中文排序,按照之前英文排序的方法,发现结果不成功,原来Mysql中utf8mb4编码的数据按中文排序要先转GBK,
SELECT *FROM mb_member t WHERE 1=1 ORDER BY CONVERT(full_name USING gbk) asc
这样排出来的结果就完全按照中文来排序了,但是如果直接把convert放到Hibernate的HSQ中,肯定是不行的,会报“unexpected token: USING”错误。
这就需要在Mysql的方言中注册一个方法,共两步:
一、继承 MySQL57InnoDBDialect 写下自己的方言类
import org.hibernate.dialect.MySQL57InnoDBDialect;import org.hibernate.dialect.function.SQLFunctionTemplate;import org.hibernate.type.StringType;public class MySQLLocalDialect extends MySQL57InnoDBDialect { public MySQLLocalDialect(){ super(); registerFunction("convert",new SQLFunctionTemplate(StringType.INSTANCE, "convert(?1 using ?2)") ); }}
二、修改Hibernate配置方言指向自己的方言类
至此就可以了,使用时: convert(t.fullName , 'gbk') 会自己转换为 convert(full_name USING gbk)
SELECT DISTINCT t FROM MbMemberEntity t WHERE 1=1 ORDER BY convert(t.fullName , 'gbk') asc
解决问题中要感谢以下博客:
1. http://liugang-ok.iteye.com/blog/1167859
2. http://blog.csdn.net/zhichao2001/article/details/11721325
3. http://www.iteye.com/problems/94206
阅读全文
0 0
- Mysql数据库下Hibernate按中文姓名排序
- Mysql,姓名按笔画排序
- MySQL数据库中文排序
- mysql 姓名首字母排序
- hibernate下 mysql中文乱码
- java 读取mysql排序 hql中对mysql中文排序完整解决方案 hibernate注册mysql数据库的函数
- hibernate支持中文排序(mysql)
- 解决Hibernate中MySQL的中文排序
- Hibernate插入mysql数据库中文乱码解决
- hibernate向mysql数据库插入中文乱码
- Hibernate连接MySQL数据库中文乱码问题
- hibernate 连接 mysql 数据库中文乱码解决方案
- hibernate插入中文到mysql数据库乱码
- MySQL按中文排序
- 在mysql数据库中中文排序
- MYSQL数据库带中文的字段排序
- 编写mysql函数 随机生成中文姓名
- 按姓名,按成绩排序
- Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
- mysql主从搭建
- 程序员必知的 Python 陷阱与缺陷列表
- cocoapods安装问题-ERROR: While executing gem ... (Gem::DependencyError)
- GStreamer基础教程01——Hello World
- Mysql数据库下Hibernate按中文姓名排序
- RESTful API 设计指南
- 一起学Java_面向对象(2)
- Sigmoid非线性激活函数,FM调频,胆机,HDR的意义
- 记录VS release WPF应用遇到的问题
- 解决Maven编译(maven install)时,出现的“找不到符号”的问题
- Maven项目转web项目
- c++中四种类型转换方式
- Netty ByteBuf