Hibernate的HQL已经支持大多数数据库函数,肯定不能包括所有, 幸运的是Hibernate已经对此做了相应的方案解决, 也就是Dialect中注册数据库函数.具体做法如下,我们以Mysql5为例
Mysql 的convert函数,现现在数据库的字符集是utf-8,如果想实现中文排序,就需要用convert(filedName using gbk) 实现,但现有的hibernate的hql不能支持此函数, 我们可以现在Dialect注册一个函数,一样不赞成直接修改Hibernate 的源码, 我们可以扩展一个类,如下代码所示
import org.hibernate.Hibernate; import org.hibernate.dialect.MySQL5Dialect; import org.hibernate.dialect.function.SQLFunctionTemplate ; public class MySQL5LocalDialect extends MySQL5Dialect { public MySQL5LocalDialect(){ super(); registerFunction("convert", new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using ?2)") ); } }
现在applicationContext.xml中或hibernate.hbm.xml中修改
package.MySQL5LocalDialect
package.MySQL5LocalDialect
<property name="hibernate.dialect">
com.credit.publicmodel.util.MySQL5LocalDialect
</property>
现在HQL中使用convert方法, 例如: order by convert(name, 'gbk') , "GBK"也可以是其他字符集
相关推荐
在使用Hibernate进行数据库操作时,可能会遇到MySQL数据库中文排序不正确的问题。这通常是由于字符集设置、数据库排序规则以及Hibernate的配置等因素导致的。本文将深入探讨如何解决这些问题,确保MySQL数据库中的...
本资源包含Hibernate的帮助手册和API集合,无论是英文版还是中文版,都能为开发者提供详尽的参考资料,确保理解和应用的准确性。 一、Hibernate概述 Hibernate是一个强大的Java持久层框架,它简化了数据库与Java...
4. **Query与Criteria API**:介绍如何使用HQL(Hibernate Query Language)和Criteria API进行复杂的数据查询,包括条件、排序、分组和连接等。 5. **Caching**:探讨了Hibernate的缓存机制,包括第一级缓存...
- **查询**:详细解读HQL和Criteria API的用法,包括条件查询、分组、排序、聚合函数等。 - **缓存**:介绍第一级缓存和第二级缓存的概念,以及如何配置和利用缓存提高性能。 - **高级特性**:涵盖了懒加载、集合...
3. 查询语法:解析了HQL和Criteria API的使用方法,以及如何执行分页、排序和条件查询。 4. 映射关系:讲解了如何通过XML映射文件或注解来定义对象和表之间的复杂关系,如一对一、一对多、多对多等。 5. 性能调优...
### Hive用户指南中文版知识点概览 #### 一、Hive结构 **1.1 Hive架构** Hive作为建立在Hadoop之上的数据仓库基础架构,其主要目标是简化大数据的处理过程。Hive的架构主要包括以下几个核心组件: - **用户接口*...
3.1.x版本中,Hibernate已经包含了对主流数据库的方言支持,如MySQL、Oracle、PostgreSQL等,使得代码更具移植性。 八、性能优化 在3.1.x版本中,Hibernate对性能进行了多方面的优化,包括延迟加载(Lazy Loading)...
《Hibernate 3.2.0 参考指南中文版》是一部深入浅出的Java...通过学习《Hibernate 3.2.0 参考指南中文版》,开发者可以深入了解Hibernate的工作原理,熟练掌握其使用技巧,从而在Java开发中更高效地处理数据库操作。
{13.5.1}MySQL}{198}{subsection.13.5.1} {13.6}连接池}{199}{section.13.6} {13.6.1}Wrapper}{199}{subsection.13.6.1} {13.7}DAO}{199}{section.13.7} {13.8}java.util.Date与java.sql.Date比较}{200}{...