2016-03-11 39 views
2

我正在使用hibernate的createSQLQuery方法返回一個列表。使用hibernate createListQuery方法在列表中存儲映射

代碼:

Query query=session.createSQLQuery("select name,marks,grade from student where id=12"); 
List list = query.list(); 

另外我想知道究竟會在列表中返回。它是否僅包含值,還是包含列名?

如果它還包含列名稱,那麼我想將此列表的每個元素都分解爲col名稱及其值;所以我可以把地圖<String,String>(地圖<colName,colValue>)添加到新列表List<Map<String,String>>我該怎麼做。

回答

2

createSQLQuery返回

List<Object[]> 

,它將包含只是值。 您可以提取它,只要你喜歡,例如

List<Map<String,String>> = new ArrayList<HashMap<String,String>>(); 
    for (Object row: queryResult) 
        { 
         Map <String, String> map = new HashMap<String, String>(); 
         Object[] versionId = (Object [])row; 
         map.put("name", versionId[0]); 
         ... 
         result.add(map); 
        } 

或者你可以創建一個模型,並transer查詢結果中列出的實體看這裏spring hibernate.createSQLQuery return as custom entity

+0

另外,爲了得到一個'名單<地圖<列名, columnValue >>'你可以使用'createSQLQuery(...)。setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)' – Roman