---恢復內容開始---
開發中遇到的一個小問題,使用Hibernate中的HQL查詢時,使用query.list()查詢出來的是一個List<Object>結果集
原來代碼:
public List findDataByProvince(String yxszsdm, int year) {
StringBuffer sql=new StringBuffer();
sql.append("SELECT * FROM employment_status WHERE sfdm=:sfdm AND year=:year " +
" AND stat_date =(SELECT MAX(stat_date) FROM employment_status)");
logger.info(sql.toString());
Query query=this.getSession().createSQLQuery(sql.toString());
query.setParameter("sfdm",yxszsdm);
query.setParameter("year",year);
List<EmploymentStatus> list=(List<EmploymentStatus>)query.list();
return list;
}
導致出現的問題如下圖所示:

在代碼中,我期望的是 返回一個List<EmploymentStatus> 集合對象,但是返回的是List<Object>,這樣接收竟然也不報錯,出現的問題就是,字段名少了,變成了0 1 2 3.. ,這樣的數據需要我們在重新做處理,顯示很麻煩。
修改后代碼:
public List<EmploymentStatus> findDataBySchool(String yxszsdm,String yxdm,int year) {
StringBuffer sql=new StringBuffer();
sql.append("SELECT * FROM employment_status WHERE sfdm =:sfdm OR yxdm = :yxdm AND year =:year " +
" AND stat_date =(SELECT MAX(stat_date) FROM employment_status) ");
logger.info(sql.toString());
SQLQuery query=this.getSession().createSQLQuery(sql.toString());
query.setParameter("sfdm",yxszsdm);
query.setParameter("yxdm",yxdm);
query.setParameter("year",year);
query.addEntity(EmploymentStatus.class);
return query.list();
}
在這里需要我們將Query換成SqlQuery,使用其中的sqlQuery.addEntity(EmploymentStatus.class),這樣查詢出來的結果就是我們想要的對象結果集。

---恢復內容結束---