`
Aubergine_kang
  • 浏览: 264243 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate的HQL支持数据库函数(转)

 
阅读更多


     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中修改

<property name="dialect">myproject.utils.MySQL5LocalDialect</property>

  现在HQL中使用convert方法, 例如:

from User order by convert("name", "gbk")

, "GBK"也可以是其他字符集
 

分享到:
评论
1 楼 leeoo 2012-06-07  
感谢,帮我解决了一个varchar列排序的问题~

相关推荐

    Hibernate hql查询语法总结

    总之,Hibernate HQL提供了丰富的查询功能,使得开发者能够以面向对象的方式处理数据库操作,大大提高了开发效率。通过熟练掌握HQL,可以更好地利用Hibernate框架实现数据库操作的灵活性和便捷性。在实际应用中,...

    hibernate 调用oracle函数

    4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...

    HibernateHql综合测试小程序

    8. **函数调用**:HQL支持数据库内置函数,如`lower()`、`upper()`等,以及自定义函数。 该测试程序还包含了JUnit测试框架,用于验证HQL查询的正确性。JUnit是Java中的单元测试库,它提供了一种结构化的方法来编写...

    Hibernate-HQL.rar_HQL_hibernate hql

    2. 避免在HQL中使用SQL函数:尽量用Hibernate提供的函数,以确保跨数据库兼容性。 3. 优化查询性能:合理设计数据库索引,避免全表扫描,尽量减少JOIN操作。 总之,Hibernate-HQL是Java开发中处理数据库查询的重要...

    Hibernate HQL.txt

    根据提供的文件信息,我们可以深入探讨Hibernate HQL(Hibernate Query Language)的相关知识点,特别是关于其查询功能、连接操作、条件过滤以及聚合函数的应用等。 ### Hibernate HQL简介 Hibernate HQL是一种...

    NHibernate hql 可用函数,函数大全

    ### NHibernate HQL 可用函数详解 #### 一、查询基本语法与示例 **1....- **语法**: `FROM &lt;类名&gt; [WHERE &lt;条件&gt;]` - **示例**: `FROM Category c ...通过这些示例,你可以更好地理解和应用HQL来完成数据库操作任务。

    Hibernate HQL 结合 velocity

    HQL支持各种复杂的查询操作,如聚合函数、连接查询、子查询等。 **Velocity** 的核心概念是模板,开发者可以在模板中嵌入Java表达式,这些表达式会根据运行时的数据上下文进行计算。Velocity模板语言(VTL)简洁且...

    精通hibernate HQL语言

    HQL还支持聚合函数,如`count`、`max`、`min`、`sum`和`avg`,以及分组和排序。例如,要计算每个系别的学生数量,我们可以使用以下HQL: ```java String hql = "select s.sdept, count(s) from Student s group by ...

    另类查询 Hibernate HQL 深度历险

    Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它与SQL类似但针对对象模型,允许开发者直接查询对象而不是数据库表格。HQL支持多种查询功能,包括投影、约束、聚合和分组。 **投影**是...

    Hibernate HQL详解.docx

    Hibernate HQL,全称为Hibernate Query Language,是Hibernate框架中用于操作数据库的一种面向对象的查询语言。它允许开发者用面向对象的方式来编写查询语句,极大地提高了开发效率和代码的可读性。以下是对HQL的...

    hibernate_hql.rar_HQL

    HQL支持基本查询、聚合函数、分组、排序、子查询以及连接查询等多种操作,使得数据库查询更加灵活和高效。 一、HQL基本查询 HQL的基本查询语法与SQL类似,但更加面向对象。例如,要查询所有User对象,HQL语句可以写...

    Hibernate底层数据库操作函数BaseDao+具体实例

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。`BaseDao`是常见的一种设计模式,用于封装Hibernate的基本数据库...

    hibernate3.0 和数据库生成pojo类的工程方法

    Hibernate 3.0是Hibernate ORM框架的一个重要版本,它增强了性能,提供了更丰富的API,并引入了HQL(Hibernate Query Language)等新特性。在这个版本中,Hibernate提供了逆向工程(Reverse Engineering)工具,...

    Hibernate注解方式、HQL查询

    4. **函数与聚合**:HQL支持内置函数,如`COUNT`、`MAX`、`AVG`等,以及`GROUP BY`和`HAVING`子句。例如,统计每个年龄段的用户数量: ```java hql = "select age, count(*) from User group by age having count(*)...

    Hibernate HQL精华

    总结,Hibernate HQL是Java开发者处理数据库查询的强大工具,它提供了一种面向对象的方式来表达SQL查询,使代码更加可读且易于维护。通过理解并熟练掌握HQL,可以显著提高开发效率,更好地利用Hibernate框架的潜力。

    hibernate动态数据库进化版

    通过自定义`Dialect`类,可以实现特定数据库的特性,如存储过程、函数的支持。 3. **元数据动态生成**:在某些情况下,可能需要在运行时根据数据库结构动态生成Java实体类和映射文件。这可以通过解析数据库元数据来...

    hibernate hql大全

    Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它允许开发者以类和属性的名称进行查询,而不是直接操作数据库的表和列。HQL的强大之处在于它将数据库操作与业务逻辑解耦,使得代码更...

    Hibernate之HQL查询

    HQL支持常用的聚合函数,如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`,可以用于统计和计算。例如: ```sql SELECT COUNT(s) FROM Student s WHERE s.major = '计算机科学' ``` 这个查询将返回计算机科学专业学生的数量...

    Hibernate-HQL-查询-Query资料

    - HQL是Hibernate提供的面向对象的查询语言,与SQL类似,但更加面向对象,将数据库表映射为Java类,表中的行映射为类的对象。 - HQL与JPA的JPQL相似,都是为了提高代码的可读性和可维护性,避免硬编码SQL。 2. **...

Global site tag (gtag.js) - Google Analytics