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
分享到:
相关推荐
使用Criteria API进行联表查询时,可以使用`createCriteria()`和`createAlias()`方法定义关联关系,并通过`setFetchMode()`设置Fetch策略。 10. **查询结果的转换和处理** Hibernate查询的结果可以是单个对象、...
5. 结果集转换:使用Hibernate的Transformer或自定义ResultTransformer,将查询结果转化为所需格式。 四、5.0.11.Final版亮点 - 性能优化:对查询性能进行了调整,提升了处理大数据量的能力。 - 错误修复:修复了...
本文将深入探讨Criteria API的使用方法,并通过源码分析来帮助初学者快速掌握这一功能。 ### 1. Criteria API概述 Criteria API是Hibernate的一个强大特性,它提供了一种灵活且类型安全的查询方式。与HQL...
`Session.createSQLQuery()` 可以创建原生的SQL查询,返回的结果可以映射到POJOs或者使用ResultTransformer转换。 总结,"hibernate5--4.检索方式及策略"涵盖了Hibernate中的各种检索技术,包括HQL、Criteria API、...
使用ResultTransformer可以实现这个功能。 **9. 第二级缓存与查询缓存** Hibernate提供了一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存)。二级缓存可以提高性能,但需要正确配置和使用。...
例如,使用save()方法保存新对象,get()或load()方法获取已有对象,update()方法更新对象,delete()方法删除对象。 6. HQL(Hibernate Query Language): HQL是Hibernate提供的SQL的面向对象版本,允许开发者使用...
- ResultTransformer:介绍了一种转换查询结果的方法。 - 理解结果:提供了理解查询结果的指南。 综上所述,`hibernate_search_reference.pdf` 为开发者提供了一个全面深入的 Hibernate Search 使用手册,涵盖了...
在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...
首先,让我们了解一下 Query 对象的基本使用方法。Query 对象可以通过 Session 对象的 createSQLQuery() 或 createQuery() 方法创建,例如: ```java Session session = sf.openSession(); Query query = session....
- **Hibernate框架查询优化**:在使用Hibernate进行数据库操作时,为了提高查询效率,可以利用`setResultTransformer`方法进行结果转换,如`hibernatequery.setResultTransformer(ResultTransformer transformer)`。...
Hibernate中的Criteria查询可以通过设置ResultTransformer为DISTINCT_ROOT_ENTITY来去除查询结果中的重复实体。`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这一行代码的作用是确保返回的实体结果...
1. **Hibernate离线查询去除重复项**:在Hibernate中,使用Criteria API时,可以设置ResultTransformer为`Criteria.DISTINCT_ROOT_ENTITY`来去除查询结果中的重复实体。 2. **HTTP与SMTP协议及端口**:HTTP是用于...
在Hibernate中,如果需要去除查询结果中的重复项,可以使用`Criteria.DISTINCT_ROOT_ENTITY`作为`ResultTransformer`。这将确保返回的实体集合中没有重复的根实体。例如: ```java Criteria criteria = session....
对于每个需要调用的存储过程,我们需要定义一个HBM(Hibernate Mapping By Example)XML文件,或者使用Fluent NHibernate的映射API。下面我们将通过一个简单的增删改查例子来说明。 1. **增加(Insert)**: 在...
让JPA的Query查询接口返回Map对象的方法 JPA(Java Persistence ...让JPA的Query查询接口返回Map对象的方法可以使用unwrap()方法和setResultTransformer()方法来实现。这样可以使得代码更加清晰易懂,且灵活性更强。