在写hql写表连接发现不能使用on关键字,只能用sql了,可以使用下面的方法把执行后的Object转换为实体对象
Session session=this.getSession(); Query query=session.createSQLQuery(sql.toString()).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); query.setString(0, "%"+gongGaoName+"%"); query.setFirstResult(ps.getStartIndex()); query.setMaxResults(ps.getCountOnEachPage()); //因为写的sql语句,query.list()返回的是Object类型 List<?> list=query.list(); //把Object类型放入实体类 Iterator<?> it=list.iterator(); List<BhTiJiaoHeTong> item = new ArrayList<BhTiJiaoHeTong>(); while(it.hasNext()){ //把实体类放入到List中 BhTiJiaoHeTong tiJiaoHeTong=new BhTiJiaoHeTong(); Map<?, ?> map = (Map<?, ?>)it.next(); //写的是数据库中的列名,区分大小写,如oracle的必须是大写 tiJiaoHeTong.setId(map.get("ID")==null?null:Long.parseLong(map.get("ID").toString())); tiJiaoHeTong.setGdId(map.get("BIAODUANID")==null?null:Long.parseLong(map.get("BIAODUANID").toString())); tiJiaoHeTong.setBiaoDuanBianHao(map.get("BIAODUANID")==null?null:map.get("BIAODUANID").toString()); tiJiaoHeTong.setBiaoDuanMingCheng(map.get("BIAODUANMINGCHENG")==null?null:map.get("BIAODUANMINGCHENG").toString()); tiJiaoHeTong.setGongGaoBianHao(map.get("GONGGAOBIANHAO")==null?null:map.get("GONGGAOBIANHAO").toString()); tiJiaoHeTong.setGongGaoMingCheng(map.get("GONGGAOMINGCHENG")==null?null:map.get("GONGGAOMINGCHENG").toString()); item.add(tiJiaoHeTong); }
以上代码有分页,如果没有分页可以使用spring的jdbcTemplate转换为实体类对象
final List<BhTiJiaoHeTong> list = new ArrayList<BhTiJiaoHeTong>(); jdbcTemplate.query(sql.toString(), new RowCallbackHandler() { public void processRow(ResultSet rs) throws SQLException { BhTiJiaoHeTong biaoHouYeWu=new BhTiJiaoHeTong(); biaoHouYeWu.setId(rs.getLong("id")); biaoHouYeWu.setGdId(rs.getInt("biaoDuanId")); biaoHouYeWu.setBiaoDuanBianHao(rs.getString("biaoDuanBianHao")); biaoHouYeWu.setBiaoDuanBianHao(rs.getString("biaoDuanMingCheng")); biaoHouYeWu.setGongGaoBianHao(rs.getString("gongGaoBianHao")); biaoHouYeWu.setGongGaoMingCheng(rs.getString("gongGaoMingCheng")); list.add(biaoHouYeWu); } });