在hibernate中,如何把原生sql查询出来的结果映射到实体bean
2013-04-19 16:25
337 查看
大家都知道hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装。
个人觉得,hibernate自带的hql语句却不见得很好用。
现实工作中,有很多场景是用到原生sql进行查询的,比如oracle的递归、复杂语句查询等。或许hql也能进行递归、复杂语句的查询,但像我这种用惯ibatis的,很是不爽hql。
简单举个例子说一下,hql与sql的区别.
hql : select u from SysUser u where u.userName = '' order by u.id
sql : select * from sys_user u where u.user_name = '' order by u.id 其中SysUser 为类名,对应表名为 sys_user; userName 为类的属性名,对应表的字段名user_name
Hibernate中有没有用用原生sql查询并把结果集映射到实体bean呢?
查了一下资料,原来Hibernate可以用createSQLQuery.addEntity(xxx.class)来进行映射。
顺便说一下,hibernate中的createQuery与createSQLQuery两者的区别:
1.前者用的事hql语句进行查询,后者可以用sql语句查询。
2.前者以hibernate生成的bean为对象装入list返回,后者则是以对象数组进行存储。
好了,其实很简单。代码贴上:
注:本人用的是hibernate3.6.4
先简单说这么多,纯属工作笔记。如不对,欢迎指正。
个人觉得,hibernate自带的hql语句却不见得很好用。
现实工作中,有很多场景是用到原生sql进行查询的,比如oracle的递归、复杂语句查询等。或许hql也能进行递归、复杂语句的查询,但像我这种用惯ibatis的,很是不爽hql。
简单举个例子说一下,hql与sql的区别.
hql : select u from SysUser u where u.userName = '' order by u.id
sql : select * from sys_user u where u.user_name = '' order by u.id 其中SysUser 为类名,对应表名为 sys_user; userName 为类的属性名,对应表的字段名user_name
Hibernate中有没有用用原生sql查询并把结果集映射到实体bean呢?
查了一下资料,原来Hibernate可以用createSQLQuery.addEntity(xxx.class)来进行映射。
顺便说一下,hibernate中的createQuery与createSQLQuery两者的区别:
1.前者用的事hql语句进行查询,后者可以用sql语句查询。
2.前者以hibernate生成的bean为对象装入list返回,后者则是以对象数组进行存储。
好了,其实很简单。代码贴上:
public List<E> getListEntityBySql(String sql,E entity) { Session session = this.getSession(); Query query = session.createSQLQuery(sql).addEntity(entity.getClass()); return query.list(); }这个方法是DAO层的,因为获取到hibernate的session一般都是在DAO层。
注:本人用的是hibernate3.6.4
先简单说这么多,纯属工作笔记。如不对,欢迎指正。
相关文章推荐
- hibernate 原生sql查询映射到实体bean
- 解决Hibernate原生SQL映射问题 - SQL查询出来的结果映射为值对象
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- loushang5关于多表关联查询结果,如何映射实体bean
- Hibernate之使用sql语句查询多个表,返回多种字段,将返回结果映射到自定义的普通pojo类中
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- hibernate原生sql查询映射java bean问题,出现Ljava.lang.object错误
- Hibernate查询结果转换为实体类型 (HQL/SQL)
- mybaties+maven+springboot整合将查询结果映射到实体Bean时的注意事项
- hibernate的sql查询出来封装实体的两种方式
- 如何将多个SQL查询统计结果一次显示出来
- 如何在sql/plus中把select语句查询显示出来的结果中的显示字段长度缩小
- 关于hibernate如何把原生sql查出的结果转化为对象
- 关于hibernate如何把原生sql查出的结果转化为对象
- hibernate中的query查询原生sql语句,如何获得返回记录中的每一个字段的值
- Hibernate中原生sql查询多个表,数据映射
- Hibernate3.2.6 原生sql 查询使用方法,将查询结果直接转换为POJO,不必非要指定属性大写
- hibernate查询结果映射到实体和map的方法
- Hibernate 原生SQL 与 (标量查询、字符串查询、实体查询)