2011-03-14 62 views
4

Heya, 我是新的休眠。我不得不說它確實簡化了SQL查詢的所有內容。但是,操縱返回的結果目前對我來說是頭痛的問題。檢索休眠查詢結果作爲結果集,而不是列表

結果以列表形式返回。大多數情況下,我真的希望將結果放在結果集中,以便我可以使用結果集更容易地操作它,您可以按列名或索引指定值。在List中,我幾乎擁有自己的noobity。

在某些情況下,我可以將列表檢索到JSF數據表中,然後直接調用該成員。我不能總是這樣做。不要問我爲什麼。 @。@紡紗頭。

有沒有辦法讓結果集而不是列表休眠?

+3

您希望Hibernate返回ResultSet而不是實體列表嗎?如果是這樣,爲什麼你需要Hibernate呢? – axtavt 2011-03-14 09:20:37

+2

顯示至少一個例子,爲什麼'ResultSet'優於'List '。我真的無法想象任何一個。 – BalusC 2011-03-14 11:34:49

+3

BalusC,我從不說ResultSet比List好。我知道冬眠是有原因的。我似乎不能根據列名解析列表,例如在ResultSet中,我可以執行resultSet.getString(index)或resultSet.getString(columnName)。在列表中,顯然我不能這樣做。有什麼我可以做的嗎? – 2011-03-14 23:23:38

回答

2

好吧,我設法讓它工作!我很開心! 對於那些誰試圖找到如何操作由Hibernate查詢返回的名單,基本上是我所做的是..

//previous code 
list = (List<MappedClass>)query.list(); 

從那裏清單應包括映射的類,您可以通過迭代器訪問它,然後使用getter來檢索值。 示例

//previous code 
for (int i =0; i<list.size(); i ++) { 
    String name; 
    String id; 
    name = list.get(i).getName(); 
    id = list.get(i).getId(); 

    //add your data manipulation here 
} 

希望這會有所幫助。

+0

哦,是*那*你的實際問題?今後,請嘗試更仔細地提問。例如。 「如何遍歷Java中的對象List?」而不是問如何實現解決方法和/或不同/錯誤的解決方案。有更好/更乾淨的方式來做到這一點,但我會把它留給你作爲練習:) – BalusC 2011-03-15 02:08:51

+0

呃..是嗎?你能不能讓我知道?如果我的問題不是社區真正理解的,而不是英語母語人士,我很抱歉。 – 2011-03-15 06:00:50

3

略顯陳舊的線程,但我無法抗拒:

// Code for iterating over a list of objects 
    for(MappedClass mappedCless : list){ 
     String name = mappedClass.getName(); 
     String id = mappedClass.getId(); 
     // further logic 
    } 
+0

謝謝。我可以使用這個! – 2011-11-02 01:17:08

0

您可能需要這個,如果你有龐大的數據庫,你可以不適合列表導致到內存中。使用滾動()而不是列表():

Query query = session.createQuery(query); 
query.setReadOnly(true); 
setFetchSize(Integer.MIN_VALUE); //MUST use Integer.MIN_VALUE, other value=fetch all 
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY); 
// iterate over results 
while (results.next()) { 
    Object row = results.get(); 
} 
results.close();