2010-08-05 47 views
0

我在我的應用程序下面的查詢:v的Hibernate查詢結果

public List getLocation(String id) { 
    List object = null; 
    try { 
     org.hibernate.Transaction tx = session.beginTransaction(); 
     Query q = session.createQuery("from Entrancestolocations as EL left join EL.entrances as E left join EL.location as L where L = " + id); 

     object = (List) q.list(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return object; 
} 

此查詢的結果是一個列表。 Entrancestolocations是一個帶有外鍵位置和入口的表格。我不知道如何在不使用索引的情況下訪問此列表的元素,因爲我不知道我處理的對象類型是什麼。實現是搞砸了 - 如何正確地做到這一點?我應該使用哪種對象來存儲來自數據庫不同表中的數據,以便能夠在應用程序中使用它們? 感謝您的幫助!

+0

你的意思是不是列表中的其他對象,如ArrayList或地圖? – 2010-08-05 09:34:51

+0

是的。因此,稍後我可以按以下方式使用它:Object.name – Enzomatric 2010-08-05 09:42:54

回答

0

我工作了一個月,只有Hibernate的,但我認爲你應該也許還可以利用對象的數組列表:

List<Object[]> objects = null; 

添加地圖: 地圖MYMAP =新的HashMap();

例如,如果要按字段x訪問結果:只需將其添加到您的查詢中即可。

...CreateQuery("Select Table.x Table2.y from ..... where id = ");

嘗試{org.hibernate.Transaction tx = session.beginTransaction(); Query q = session.createQuery(「from Entrancestolocations as EL left join EL.entrances as E left join EL.location as L where L =」+ id);

objects = (List<Object[]>) q.list(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

for(Object[] o : objects){// o[0] is each x of Table1 and o[1] is each y of Table2 
myMap[(String)o[0]] = (String)o[1]; 

}

return myMap; 

您現在可以通過例如X屬性訪問地圖..

+0

對於在數據庫應用程序中遇到的典型情況,它看起來過於複雜,您不覺得嗎?它看起來像一個快速修復。 – Enzomatric 2010-08-05 09:48:04