hibernate 使用问题 2

来源:互联网 发布:缎面 婚纱 知乎 编辑:程序博客网 时间:2024/05/29 10:17

使用hiberate 原生查询

 

public List<SearchHouse2> findPageByDistance(int page, int size,double lon,double lat) {//String sql = "select a4.aid,a4.address,a4.touzishang, a4.jdjj, a15.thumb,a15.subject  FROM cms_archives15  as a15 join cms_archives_4 as a4 where a15.aid=a4.aid order by a15.aid DESC";Stringsql="SELECT * ,getDistance("+lon+",building.dt_0,"+lat+",dt_1) as dis from (select a4.aid,a4.address,a4.touzishang, a4.jdjj, a15.thumb,a15.subject,a15.dt_0,a15.dt_1 FROM cms_archives15  as a15 join cms_archives_4 as a4 where a15.aid=a4.aid ) as building ORDER BY dis ASC";System.out.println(sql);List list = this.getSession().createSQLQuery(sql).addScalar("aid", Hibernate.INTEGER).addScalar("address", Hibernate.STRING).addScalar("touzishang", Hibernate.STRING).addScalar("jdjj", Hibernate.FLOAT).addScalar("thumb", Hibernate.STRING).addScalar("subject", Hibernate.STRING).addScalar("dis", Hibernate.DOUBLE).setFirstResult((page - 1) * size).setMaxResults(size).list();ArrayList<SearchHouse2> ssh = new ArrayList<SearchHouse2>();for (int i = 0; i < list.size(); i++) {SearchHouse2 sh = new SearchHouse2();Object[] temp = (Object[]) list.get(i);System.out.println(temp);System.out.println(temp.length);System.out.println(temp.toString());sh.setAid((Integer) temp[0]);sh.setAddress((String) temp[1]);sh.setTouzishang((String) temp[2]);sh.setJdjj((Float) temp[3]);sh.setThumb((String) temp[4]);sh.setSubject((String) temp[5]);sh.setDis((Double)temp[6]);ssh.add(sh);}return ssh;}


用navicat查到的结果:

 

sh.setDis((Double)temp[6]); 问题,之前是把6用的8, 提示数组     越界

虽然查的条数是8条的,但.addScalar("dis", Hibernate.DOUBLE) 只有6 所以会报错