hibernate的几种纯sql的查询方式

几种hibernate的纯SQL查询方式,查询和表无映射关系的pojo实体和表有映射关系的实体......

1、getSession().createSQLQuery(sql).query.addScalar("productId", StandardBasicTypes.STRING)........可以直接返回pojo(非映射的实体)

2、getSession().createQuery("select new com.eastelsoft.Product(productId、serviceId...) from TBillAcctItem  ").list().....可以直接返回pojo(非映射的实体)

3、getSession().createSQLQuery(sql).list()  ......返回的是 List<Object[]>   object类型的数组,再去做遍历

4、.....addEn实体 (后续再说)

主要使用前2种的,当我们希望sql查询出来的结果能直接够绑定到没有和表字段一一映射的pojo上时候,这两种就起作用了。

第一种方法之前的文章说过: http://blog.csdn.net/liwf_/article/details/39502745

第二种有几点要注意的地方:

使用new对象的方法,new的实体里里面使用sum函数时候不行,主要是sum函数返回的是Long类型的,我们有时候字段使用的是Integer,所以就报错了 ,这点需要注意。

还有就是这个方法使用的是createQuery,HQL语言 查询时候 from的是实体 不是表结构。之前的createSQLQuery不是HQL语言、查询from的是表结构

第三种做笨的方式 查询原生的object对象 然后再去遍历转换为我们需要的类型 ,还有个第四种 的摸索的还有点问题 后面补上

时间: 2024-11-05 15:56:44

hibernate的几种纯sql的查询方式的相关文章

[技巧篇]06.关于防止SQL注入的方式,不使用预处理

在一期,二期阶段,有一些同学,对于SQL语句总是使用字符串的拼接,这是一个比较坏的毛病,这样非常影响我们的程序的安全性,所以一般情况下我们都推荐预处理模式,针对这种模式希望不了解的同学去努力学习,下面我给大家介绍另一种防止SQL注入的方式,希望对你们有帮助! 应该说,您即使没有处理 HTML 或 JavaScript 的特殊字符,也不会带来灾难性的后果,但是如果不在动态构造 SQL 语句时对变量中特殊字符进行处理,将可能导致程序漏洞.数据盗取.数据破坏等严重的安全问题.网络中有大量讲解 SQL

关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)

相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已.我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的.      例如现在有两张表,一张是user表,放了一些用户的信息,另外一张表是用户发表的帖子,里边有一个user的外键.我们需要查询出来,某个人发布的帖子,sql如下: Java代码  select u.userName,p.title,p.addTime from user as u,post

Hibernate的Api以及三种查询方式

Hibernate  Api |-- Configuration       配置管理类对象 config.configure();    加载主配置文件的方法(hibernate.cfg.xml) 默认加载src/hibernate.cfg.xml config.configure("cn/config/hibernate.cfg.xml");   加载指定路径下指定名称的主配置文件 config.buildSessionFactory();   创建session的工厂对象 |--

SQL分页查询,纯Top方式和row_number()解析函数的使用及区别

听同事分享几种数据库的分页查询,自己感觉,还是需要整理一下MS SqlSever的分页查询的. Sql Sever 2005之前版本: select top 页大小 * from 表名 where id not in ( select top 页大小*(查询第几页-1) id from 表名 order by id ) order by id 例如: select top 10 * --10 为页大小 from [TCCLine].[dbo].[CLine_CommonImage] where

hibernate的三种查询方式

hibernate的查询方式常见的主要分为三种: HQL, QBC, 以及使用原生SQL查询(Session的查询) 1)Query的查询:使用HQL语句或SQL语句完成查询 2)Criteria的查询:通过方法和类中属性的关系,来设置查询条件,完成查询. 3)Session的查询:按主键查询查询,方法为get或load 一.HQL查询 ? HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式. ? H

Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询

HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象.其它的,包括一些查询函数(count(),sum()等).查询条件的设定等,全都跟SQL语法一样. 示例: Session session = SessionFactory.getCurrentSession(); User user = null; Transaction ts = s

hibernate 的几种查询——工作中使用到的

HQL是hibernate自己的一套查询语言,于SQL语法不同,具有跨数据库的优点.示例代码: // 获取检查单实例列表                 String tplSql = "FROM CheckFormTemplate t where t.type=-1 and t.id in("+ instanceIdStr +")";            Session session = getSession();            return sess

SQL两种简单分页查询方式

以前我们或许都用过了linq的skip and take方式进行分页查询,但是很少自己写sql的分页查询,因为大多数时候,我们都是在调用别人的方法. 最近看到一个文档,感觉方法里面实现的分页查询进入数据库调用的时候,实际最底层调用的还是SQL的分页查询,例如,我们用linq写个分页查询,转成sql表达式后发现: 实际调用的时候,才发现SQL底层是这样进行分页的. 下面,本文主要是介绍两种SQL的分页查询. 一,TOP方式 ----第一种分页查询方式:TOP方式 declare @page int

hibernate SQL聚合查询

一次项目中使用hibernate 的templet方式执行普通sql,方式如下:String sql ="select count(*) as c from  users";SQLQuery sq = session.createSQLQuery(sql);Object count = sq.uniqueResult();结果报错column '' can not found解决方法是设置返回列的类型,通过addScalar方法.如下所示:String sql ="selec