HQL常用函数
来源:互联网 发布:淘宝模版如何制作 编辑:程序博客网 时间:2024/06/05 07:10
本文为博主原创文章,转载请获得原作者同意并注明来源:http://blog.csdn.net/wengminyu/article/details/78675529
项目中用到了Hibernate框架,在此记录下HQL常用函数,以备查阅,也供他人参考。
CONCAT
字符串连接函数。此函数接受两个或以上的参数。
List<String> callHistory = entityManager.createQuery( "select concat( p.number, ' : ' , cast(c.duration as string) ) " + "from Call c " + "join c.phone p", String.class ).getResultList();
SUBSTRING
字符串子串函数。第二个参数代表截取子串的起始位置,从1开始。第三个参数(可选)代表子串的长度。
List<String> prefixes = entityManager.createQuery( "select substring( p.number, 1, 2 ) " + "from Call c " + "join c.phone p", String.class ).getResultList();
UPPER, LOWER
将给定字符串中所有字母转换为大写或小写。不多解释。
TRIM
和SQL中的TRIM函数一样,删除两端多余空格。
List<String> names = entityManager.createQuery( "select trim( p.name ) " + "from Person p ", String.class ).getResultList();
LENGTH
返回给定字符串的长度。
LOCATE
返回给定子串(第一个参数)在字符串(第二个参数)中首次出现的位置。第三个参数(可选)代表开始搜索的位置。
List<Integer> sizes = entityManager.createQuery( "select locate( 'John', p.name ) " + "from Person p ", Integer.class ).getResultList();
ABS, MOD, SQRT
分别返回绝对值,取模,算数平方根。
CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
分别返回数据库的当前日期,时间,时间戳。
BIT_LENGTH
返回二进制数据的长度。
List<Number> bits = entityManager.createQuery( "select bit_length( c.duration ) " + "from Call c ", Number.class ).getResultList();
CAST
执行SQL的CAST函数。目标必须被转换为Hibernate的数据类型,而不是数据库中的类型。Hibernate的所有数据类型详见:data types
List<String> durations = entityManager.createQuery( "select cast( c.duration as string ) " + "from Call c ", String.class ).getResultList();
EXTRACT
执行SQL的EXTRACT函数,将datetime中的一部分(例如年份)提取出来。
List<Integer> years = entityManager.createQuery( "select extract( YEAR from c.timestamp ) " + "from Call c ", Integer.class ).getResultList();
此函数有以下几个缩略版。
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
分别返回datetime中的年份、月份、日子、小时、分钟、秒。
List<Integer> years = entityManager.createQuery( "select year( c.timestamp ) " + "from Call c ", Integer.class ).getResultList();
STR
将给定的时间或数值类型转换为字符数据。是CAST的缩略版。
List<String> timestamps = entityManager.createQuery( "select str( c.timestamp ) " + "from Call c ", String.class ).getResultList();List<String> timestamps = entityManager.createQuery( "select str( cast(duration as float) / 60, 4, 2 ) " + "from Call c ", String.class ).getResultList();
||
和SQL一样,Hibernate还提供了||操作符用于字符串拼接。不过由于JPQL(Java Persistence Query Language)中没有定义这个操作符,因此尽量避免使用。
String name = entityManager.createQuery( "select 'Customer ' || p.name " + "from Person p " + "where p.id = 1", String.class ).getSingleResult();
TYPE
TYPE函数可以用来获取实体的类型。当实体类有继承层次时,这个函数非常有用。此外,实体类别还可以被参数化。
List<Payment> payments = entityManager.createQuery( "select p " + "from Payment p " + "where type(p) = CreditCardPayment", Payment.class ).getResultList();List<Payment> payments = entityManager.createQuery( "select p " + "from Payment p " + "where type(p) = :type", Payment.class ).setParameter( "type", WireTransferPayment.class).getResultList();
参考资料:Hibernate API
如果在本文中没有找到想要的信息,可以到上面的链接里进一步查找。
- HQL常用的函数
- HQL常用函数
- HQL常用函数
- HQL笔记——常用函数
- HQL 常用
- 常用hql
- 常用HQL
- hql函数
- 常用的Hql语句
- hql中常用函數介紹
- hql中常用函數介紹
- HQL常用语句
- hql中常用函數介紹
- hql常用语句
- HQL常用记录小结
- 常用HQL语句
- 常用的Hql语句
- hql中常用函數介紹
- vim 使用
- 实际使用 工厂模式+适配器模式
- linux 中 xargs、cut 以及管道综合应用
- Android 开发之漫漫长途Ⅰ—Android 系统的创世之初以及 Activity 的生命周期
- js的null和undefined的区别-js基本数据类型
- HQL常用函数
- 骑士共存问题
- centos升级内核
- USB2.0速度识别(USB上电分析)
- Swing中JList的相关问题(2)
- unity ugui多边形显示
- linux CentOS7 下 Nginx1.13.7 安装
- HTTP response code: 403
- 20 个 CSS 高级技巧汇总