`
lilerwei
  • 浏览: 52579 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate ResultTransformer用法

阅读更多
public List<Map<String, Object>> getCarsByLineName(String lineName, Long fromorto) {
		
		final String tempLineName = lineName;
		final Long tempFromorto = fromorto;

		List<Map<String, Object>> list = (List<Map<String, Object>>) this.getHibernateTemplate().execute(new HibernateCallback() {
			@Override
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				String sql = "select bc.carid carid,\n"
						+ "       ld.cardid cardid,\n"
						+ "       ld.readerid readerid,\n"
						+ "       ri.rlocation rlocation,\n"
						+ "       ri.readername readername,\n"
						+ "       bs.stationid stationid,\n"
						+ "       bs.stationname stationname\n"
						+ "  from bus_carinfo     bc,\n"
						+ "       locatedata      ld,\n"
						+ "       readerinfo      ri,\n"
						+ "       bus_stationinfo bs,\n"
						+ "       bus_lineinfo    bl\n"
						+ " where bc.cardid = ld.cardid\n"
						+ "   and ld.readerid = ri.readerid\n"
						+ "   and bs.readerid(+) = ri.readerid\n"
						+ "   and (bc.lineiddown = bl.lineid or bc.lineidup = bl.lineid)\n"
						+ "   and bl.linename = :lineName   and bl.fromorto = :fromorto";
				SQLQuery query = session.createSQLQuery(sql);

				query.addScalar("CARID", Hibernate.STRING);
				query.addScalar("CARDID", Hibernate.LONG);
				query.addScalar("READERID", Hibernate.LONG);
				query.addScalar("RLOCATION", Hibernate.STRING);
				query.addScalar("READERNAME", Hibernate.STRING);
				query.addScalar("STATIONID", Hibernate.LONG);
				query.addScalar("STATIONNAME", Hibernate.STRING);
				
				query.setParameter("lineName", tempLineName);
				query.setParameter("fromorto", tempFromorto);
				
				List<Map<String, Object>> list = query.setResultTransformer(
						Transformers.ALIAS_TO_ENTITY_MAP).list();
				return list;
			}
		});
		return list;

	}
 

以上代码测试的结果为:[{CARDID=268437586, READERNAME=68, READERID=1000068, STATIONID=141, STATIONNAME=中央党校北门站, RLOCATION=116.45007,39.9918, CARID=鲁A00002}, {CARDID=268437575, READERNAME=68, READERID=1000068, STATIONID=141, STATIONNAME=中央党校北门站, RLOCATION=116.45007,39.9918, CARID=鲁A00001}, {CARDID=268437592, READERNAME=68, READERID=1000068, STATIONID=141, STATIONNAME=中央党校北门站, RLOCATION=116.45007,39.9918, CARID=鲁A00004}]

说明:另外,对于ResultTransformer的用法还有很多,它可以将用SQL语句查询的结果转化成为指定的BEAN,也可以转为LIST,也可以转化为MAP

 

分享到:
评论

相关推荐

    Hibernate-基础联表模板

    使用Criteria API进行联表查询时,可以使用`createCriteria()`和`createAlias()`方法定义关联关系,并通过`setFetchMode()`设置Fetch策略。 10. **查询结果的转换和处理** Hibernate查询的结果可以是单个对象、...

    hibernate-release-5.0.11.Final

    5. 结果集转换:使用Hibernate的Transformer或自定义ResultTransformer,将查询结果转化为所需格式。 四、5.0.11.Final版亮点 - 性能优化:对查询性能进行了调整,提升了处理大数据量的能力。 - 错误修复:修复了...

    关联映射hibernate的criteria的用法

    本文将深入探讨Criteria API的使用方法,并通过源码分析来帮助初学者快速掌握这一功能。 ### 1. Criteria API概述 Criteria API是Hibernate的一个强大特性,它提供了一种灵活且类型安全的查询方式。与HQL...

    hibernate5--4.检索方式及策略

    `Session.createSQLQuery()` 可以创建原生的SQL查询,返回的结果可以映射到POJOs或者使用ResultTransformer转换。 总结,"hibernate5--4.检索方式及策略"涵盖了Hibernate中的各种检索技术,包括HQL、Criteria API、...

    hibernate入门教程

    使用ResultTransformer可以实现这个功能。 **9. 第二级缓存与查询缓存** Hibernate提供了一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存)。二级缓存可以提高性能,但需要正确配置和使用。...

    hibernate2.

    例如,使用save()方法保存新对象,get()或load()方法获取已有对象,update()方法更新对象,delete()方法删除对象。 6. HQL(Hibernate Query Language): HQL是Hibernate提供的SQL的面向对象版本,允许开发者使用...

    hibernate_search_reference.pdf

    - ResultTransformer:介绍了一种转换查询结果的方法。 - 理解结果:提供了理解查询结果的指南。 综上所述,`hibernate_search_reference.pdf` 为开发者提供了一个全面深入的 Hibernate Search 使用手册,涵盖了...

    Hibernate SQLQuery执行原生SQL.docx

    在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...

    Query对象setResultTransFormer()

    首先,让我们了解一下 Query 对象的基本使用方法。Query 对象可以通过 Session 对象的 createSQLQuery() 或 createQuery() 方法创建,例如: ```java Session session = sf.openSession(); Query query = session....

    开发中遇到的问题

    - **Hibernate框架查询优化**:在使用Hibernate进行数据库操作时,为了提高查询效率,可以利用`setResultTransformer`方法进行结果转换,如`hibernatequery.setResultTransformer(ResultTransformer transformer)`。...

    Java面试题

    Hibernate中的Criteria查询可以通过设置ResultTransformer为DISTINCT_ROOT_ENTITY来去除查询结果中的重复实体。`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这一行代码的作用是确保返回的实体结果...

    300+道中高级java工程师面试题大全含答案文档下载

    1. **Hibernate离线查询去除重复项**:在Hibernate中,使用Criteria API时,可以设置ResultTransformer为`Criteria.DISTINCT_ROOT_ENTITY`来去除查询结果中的重复实体。 2. **HTTP与SMTP协议及端口**:HTTP是用于...

    java工程师面试题大全

    在Hibernate中,如果需要去除查询结果中的重复项,可以使用`Criteria.DISTINCT_ROOT_ENTITY`作为`ResultTransformer`。这将确保返回的实体集合中没有重复的根实体。例如: ```java Criteria criteria = session....

    NHibernate调用存储过程

    对于每个需要调用的存储过程,我们需要定义一个HBM(Hibernate Mapping By Example)XML文件,或者使用Fluent NHibernate的映射API。下面我们将通过一个简单的增删改查例子来说明。 1. **增加(Insert)**: 在...

    让JPA的Query查询接口返回Map对象的方法

    让JPA的Query查询接口返回Map对象的方法 JPA(Java Persistence ...让JPA的Query查询接口返回Map对象的方法可以使用unwrap()方法和setResultTransformer()方法来实现。这样可以使得代码更加清晰易懂,且灵活性更强。

Global site tag (gtag.js) - Google Analytics