Hibernate + mysql 查詢僞劣時:= 出現 Space is not allowed after parameter prefix ':' MySQL異常

需求: 要求查詢一個站點在地市和省的排名信息出來。sql

效果圖:session

代碼實現: 註釋的部分是起初採用的hibernate 查詢,但不管怎麼寫都會報 space is not allowed after parameter prefix ':'......  後來上網查了,有人也遇到過相似問題,給出的解決方法是轉義冒號。 http://blog.csdn.net/woshizhangliang999/article/details/48036407  可是在不知道爲什麼在我裏不起做用。 多是我程序限制??反正不太清楚。 後來沒辦法採用了原始的JDBC 查詢。 在此記錄一下。 代碼以下。app

@Autowired
private JdbcTemplate jdbcTemplateLoms;

 

public List getStationGameSalesRank(String regionCode) {
        
        StringBuffer sb = new StringBuffer();
        sb.append("select @curRank:=@curRank+1 AS rank, sales.* from (SELECT s.station_id stationId, sum(s.this_year_sale) sales_sum FROM station_game_sales_shanxi s ");
        
//        String sql = "select @curRank \\:=@curRank+1 AS rank, sales.* from ( "+
//                     "SELECT s.station_id stationId, sum(s.this_year_sale) sales_sum FROM station_game_sales_shanxi s ";
//                    
        if (regionCode != null && !"".equals(regionCode)
                && !"0".equals(regionCode)) {
            sb.append("LEFT JOIN station sta on s.station_id = sta.station_id ");
            sb.append("Where sta.region_code ='"+regionCode+"' ");
        }
        sb.append("GROUP BY s.station_id ORDER BY sales_sum DESC ) sales, (SELECT @curRank:=0) q ");
        List list = null;
        try{
            list = jdbcTemplateLoms.queryForList(sb.toString());
//            Session session = (Session) em.getDelegate();
//            SQLQuery query = session.createSQLQuery(sql);
//            if (regionCode != null && !"".equals(regionCode)
//                    && !"0".equals(regionCode)) {
//                query.setParameter("regionCode", regionCode.trim());
//            }
//            query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
//            list = query.list();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return list;
    }
相關文章
相關標籤/搜索