當(dāng)我們用HQL進(jìn)行子查詢的時候,如select * from Tree where pid in (select id from Tree,此時HIBERANTE就會報錯,說什么*號錯誤之類的。但如果將*改為Tree類里的所有子段時就不會有問題了。就會像平時一樣第一行數(shù)據(jù)返回一個Object[],然后你再根據(jù)Tree類里字段對Object[]數(shù)組里的值進(jìn)行轉(zhuǎn)換。這樣一來比較麻煩。今天發(fā)現(xiàn)如果我SQL來查有一個方法可以返回一個對象的。
此時在遍歷list時就可以(Tree)list.get[i];將每一行的內(nèi)容變換為一個對象了。 另還可以返回一個Map對象,也就是說在在list里包含多個Map,代碼如下 引用 Query query = session.createSQLQuery("select id,name from Tree t where pid in (select id from Tree) ").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //返回一個map,KEY:為DB中名稱一致(大小寫一致)遍歷list時就可以
Map map = (Map)list.get[i]; map.get("id");map.get("name"); 來取值。按你的SQL語句select后的字段名來作為map的Key,但這個key必須與數(shù)據(jù)庫中的字段名一模一樣。 還可以用作函數(shù)方面的。如
名稱一致(大小寫一致) 直接就map.get("SUMID")可以取值了 還有一點(diǎn)就是這個方法在Hibernate3.2版本上才能正常運(yùn)行。 |
|