Hibernate中關於HQL查詢返回List數據的結果集問題

---恢復內容開始---

開發中遇到的一個小問題,使用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),這樣查詢出來的結果就是我們想要的對象結果集。

 



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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。