前段时间忙与换工作,好久没有写blog了。以前公司只用oracle数据库,而且开发用jdbcTemplate,什么查询了之类的直接用sql语句就搞定了,可现在改用hebernate,同时公司说要考虑各数据库兼容性的问题,所以许多oracle特有的特性便不能使用,这不,现在就遇到了一个问题需要解决了,需要从一个列表里面找到某一个字段的最大序号,可这个列是字符串类型,格式为‘省份’+'部门'+顺序号,现在需要根据省份以及部门找到最大的序号,我以前用sql语句很容易就可以解决该问题了.解决办法:
先取该列中的序号,然后将其转化为整型,再取最大值就可以,sql语句如下:
select max(to_number(substr(列名,前缀长度))) maxnum from 表名
现在要用hql解决,而我以前也不了解hql,还要有internet,从网上找了找资料,还真找到了,hql也提供获取子串的函数,SUBSTRING(s,offset,length)得到hql语句:
selelct max(SUBSTRING(对象.属性名,前缀长度)) from 对象,
测试了一下,发现结果正确,呵呵,有点沾沾自喜了,可是运行了一段时间,却发现序号超过了10的时候,出现问题了,每次取到最大值都是10,执行sql语句发现没有将子字串转化为整形,导致排序是按照字符串类型排序的,再上网查找hql的类型转化,找到了类型转化函数,CAST(t as TYPE)。
修改hql语句为:
selelct max( CAST(SUBSTRING(对象.属性名,前缀长度),integer)) from 对象
执行sql语句,问题搞定。
这里参考了javaeye中http://wangtong40.iteye.com/blog/355624的文章中的hql方法,感谢一下。
分享到:
相关推荐
HQL语句大全HQL语句大全HQL语句大全HQL语句大全HQL语句大全
hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全
HQL语句 HQL语句 HQL语句 HQL语句 HQL语句
非常详细直接实用的HQL语句的功能介绍 看过的人保准都说好
HQL语句大全
hql语句常规 方法 使用 了解hql语句
hibernate-HQL语句大全
hql语句大全
HQL语句的语法,很基础
常见HQL语句的示例包括输出结果,以及语句的分析总结
整理的hql语句 id生成策略 集合传参,传参方式等 应有尽有
之前写好SQL,再到代码里面来写,语句复杂的看的时不时细节会忘记,用sql转换hql工具,直接贴近了就可以了;
HQL语句查询
HQL语句的用法,关于HQL与SQL语句的比较及其用法。
HQL语句(结合实例)HQL语句(结合实例)HQL语句(结合实例)HQL语句(结合实例)HQL语句(结合实例)
下面介绍HQL语句的语法 1.from子句 2.select子句 3.聚集函数 4.多态查询 5.where子句 6.表达式 7.order by子句 8.group by子句 9.子查询语句 10.fetch关键字 11.命名查询
汇集了hql语句中大部分常用的函数 ABS(n) 取绝对值数学函数 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性])
hql精点查询语句.doc
所以在网上找到了一个elipse插件 英文图文教程 https://www.hibernate.org/hib_docs/tools/reference/en/html/plugins.html 下载地址 http://www.oschina.net/p/hibernate+tools 附件中为本人配置的eclipse ...
解析内容清晰简单,让你对hql语句半天就可以掌握!!