Hibernate中HQL函数汇总及其说明

Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。以下就是HQL的一些常用函数,有了这些函数,我们就可以拥有更多的灵活性,比如HQL如何取余,HQL如何返回集合的最值,HQL字符串处理,HQL时间、日期处理等。

函数名称 说明 类型 支持 使用方法 备注
ABS(n) 取绝对值 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性])  
SQRT(n) 取平方根 数学函数 JPAQL HQL SQRT(column_name[数字类型对象属性])  
MOD(x,y) 取余数 数学函数 JPAQL HQL MOD([对象属性(数字)或值],[对象属性(数字)或值]) 数字必须是整型,返回参数1/参数2得的余数
SIZE(c) 方法集合内对象数量 集合函数 JPAQL HQL    
MINELEMENT(c) 返回集合中最小元素 集合函数 HQL    
MAXELEMENT(c) 返回集合中最大元素 集合函数 HQL    
MININDEX(c) 返回索引集合最小索引 集合函数 HQL    
MAXINDEX(c) 返回索引集合最大索引 集合函数 HQL    
MAX(n) 返回最大值 集合函数 JPQHQL HQL    
MIN(n) 返回最小值 集合函数 JPQHQL HQL    
COUNT(n) 返回计数 集合函数 JPQHQL HQL    
CONCAT(s1,s2) 连接连个字符串 字符串函数 JPQHQL HQL CONCAT([对象属性],[对象属性])  
SUBSTRING(s,offset,length) 返回子串 字符串函数 JPQHQL HQL SUBSTRING([要截取的字符串属性字段],开始位置,截取长度)  
TRIM([[BOTH/LEADING/TRAILING]] char FROM s) 默认去掉字符串两面的空格 字符串函数 JPQHQL HQL TRIM([字符串对象属性列]) 将字段两端的空格去掉
LOWER(s) 小写 字符串函数 JPQHQL HQL LOWER([字符串对象属性列]) 将该列结果含有的字母全部大写
UPPER(s) 大写 字符串函数 JPQHQL HQL UPPER([字符串对象属性列]) 将该列结果含有的字母全部大写 
LENGTH(s) 返回字符串长度 字符串函数 JPQHQL HQL LENGTH(字段名) 返回字段内容的长度,包括数字。null值返回null.
CURRENT_DATE() 返回数据库当前日期 时间函数 JPAQL HQL CURRENT_DATE() 返回数据库当前日期
CURRENT_TIME() 时间 时间函数 JPAQL HQL CURRENT_TIME() 返回数据库当前时间
SECOND(d) 从日期中提取具体秒 时间函数 HQL SECOND(时间字段) 空的时候返回null
MINUTE(d) 从日期中提取具体分 时间函数 HQL MINUTE(时间字段) 空的时候返回null
HOUR(d) 从日期中提取具体小时 时间函数 HQL HOUR(时间字段 空的时候返回null
DAY(d) 从日期中提取具体天 时间函数 HQL DAY(时间字段) 空的时候返回null
MONTH(d) 从日期中提取具体月 时间函数 HQL MONTH(时间字段) 空的时候返回null
YEAR(d) 从日期中提取具体年 时间函数 HQL YEAR(时间字段) 空的时候返回null

时间: 2024-10-16 16:47:58

Hibernate中HQL函数汇总及其说明的相关文章

Hibernate中HQL函数汇总及获取当前时间进行比较举例

在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hibernate的面向对象的语句 sessionFactory.getCurrentSession().createQuery(sql); 我们应改成 sessionFactory.getCurrentSession().createSQL(sql);就可以了. 但有时项目要求必须要使用hql,比如说将相应的接

javascript中常用函数汇总

js中函数很多,在实际项目开发中,函数的应用可以很大程度上简化我们的代码,所以在此记下开发中js中常用的函数,增强记忆. 1.isNaN(X):函数用于检查其参数是否是非数字值. 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true.如果 x 是其他值,则返回 false.(是非数字值则为true,是数字则返回false) isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字.当然也可以用

hibernate中HQL调用自定义函数 .

在编写hql语句时,如果使用自定义的函数,hql在编译过程中将无法编译通过,这时我们需要重写下dialect方言类,这里我的oracle是10,可以根据自己的oracle版本继承不同的oracle方言类. 解决错误的步骤:     一.重写dialect类,如Oracle10gDialect     二.修改hibernate的配置文件,将默认的方言类,改成我们重写的方言类 ---------------数据库函数WX_F_GET_PARTYSTR 输入number输出varchar2-----

Hibernate中Hql查询

这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Classroom与Student是一对多的关系,这里仅仅贴出这三个bean的属性代码: Special类: public class Special { private int id; private String name; private String type; private Set<Classro

Hibernate中Hql的查询

一 . Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL 查询从而对数据库进行操作. 1.简单的查询操作案例: 1.1定义hibernate的主配置文件hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC &

(转)Hibernate中Hql查询

转自:http://www.cnblogs.com/AnswerTheQuestion/p/6512701.html 这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Classroom与Student是一对多的关系,这里仅仅贴出这三个bean的属性代码: Special类: public class Special { private int id; pr

Hibernate中HQL的日期差值计算,可计算相差多少秒

最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函数 JPAQL HQL CURRENT_DATE() 返回数据库当前日期 CURRENT_TIME() 时间 时间函数 JPAQL HQL CURRENT_TIME() 返回数据库当前时间 SECOND(d) 从日期中提取具体秒 时间函数 HQL SECOND(时间字段) 空的时候返回null MI

jQuery中的函数汇总1

欢迎访问我的github:huanshen,有我的源码解析 1.each 跟for循环很像,但是更有用,如果你理解了就知道了. // 遍历一个数组或者对象 // obj 是需要遍历的数组或者对象 // callback 是处理数组/对象的每个元素的回调函数,它的返回值实际会中断循环的过程 // args 是额外的参数数组 each: function( obj, callback, args ) { var value, i = 0, length = obj.length, isArray =

hibernate中hql语句中list和iterate区别

1.使用list()方法获取查询结果,每次发出一条语句,获取全部数据.2.使用iterate()方法获取查询结果,先发出一条SQL语句用来查询满足条件数据的id,然后依次按照这些id查询记录,也就是要执行N+1条SQL语句(N为符合条件的记录数) 两次执行list()方法,每次执行都是发出一条SQL语句,查询所有数据.下面看看两次执行iterate()方法的输出情况两次执行iterate()方法,第一次执行时发出了N+1条SQL语句,而第二次执行,则只发出一套SQL语句,与先执行list()方法