用原生sql查询返回实体对象的方法
2014-07-30 16:18
281 查看
最近由于需求变更,客户需要在原来的查询基础上加上一个判断条件,但是这个判断条件所在的实体跟原来的查询实体没有直接关联。为了不影响原来的查询结果,改为用原生SQL,使用left join来关联查询。为了不改变对查询结果的处理逻辑,将查询结果封装成原来的对象进行操作。具体操作方法如下:
1.基于JPA规范的程序:
Query query = entityManager.createNativeQuery("select id, name, age from t_user");
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(clazz));
// 其中clazz为封装对象的class
List rows = query.getResultList();
2.基于Session的程序:
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS").setResultTransformer(Transformers.aliasToBean(clazz));
这两种方法需要注意的是查询的字段的别名需要跟clazz的属性对应。
1.基于JPA规范的程序:
Query query = entityManager.createNativeQuery("select id, name, age from t_user");
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(clazz));
// 其中clazz为封装对象的class
List rows = query.getResultList();
2.基于Session的程序:
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS").setResultTransformer(Transformers.aliasToBean(clazz));
这两种方法需要注意的是查询的字段的别名需要跟clazz的属性对应。
相关文章推荐
- Hibernate4 中getHibernateTemplate() 使用原生sql语句查询并返回非托管实体对象
- Java中使用hql,sql查询返回的list<Object> 转成需要的实体对象--方法讲解!
- hibernate查询SQL语句返回自定义实体对象
- 解决 ”不允许在查询中显式构造实体类型“问题及使用其他方法实现返回 List<Model对象>或者IQueryable<Model对象>对象
- 【JPA】关于JPA使用原生多表查询,返回实体集合的方法 [@FiledResult]注解应用
- 使用SQL查询语句映射到对象实体的方法汇总
- Hibernate使用sql语句查询,返回实体类型的方法及注意事项
- hibernate 执行原生sql 返回实体list对象
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- hql 查询返回某个实体对象的泛型方法
- hibernate--原生SQL查询无法返回对象集合
- hibernate查询SQL语句返回自定义实体对象
- hibernate查询SQL语句返回自定义实体对象
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- 在hibernate中,如何把原生sql查询出来的结果映射到实体bean
- Hibernate通过SQL查询常量时只能返回第一个字符的解决方法 .
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-2
- hibernate 原生sql返回结果执行AddEntity方法
- Hibernate使用SQL查询返回实体类型
- 解决Hibernate原生SQL映射问题 - SQL查询出来的结果映射为值对象