2013-10-10 40 views
0

我找不到適合我的問題的問題,所以我只用這個問題。 所以我想把我的成績從我的查詢問題HashMap的,我的問題是某事像這樣如何在連接時使用hibernate sql時將結果添加到java hashmap?

import org.hibernate.Query; 
private static final String SELECT_MANUFACTURER_PROJECT_DISP_ID = "SELECT O.manufacturers, P.dispid" + 
     "FROM offerOrder O" + 
     "JOIN offerOrderProjectRel R" + 
     "ON O.id = R.offerOrderId" + 
     "JOIN project P" + 
     "ON P.id = R.projectId" + 
     "WHERE O.type = 'ORDER'"; 
public Map <String,String >createManufacturerProjectDispIdMap() { 
    Map<String, String> map = new LinkedHashMap<String, String>(); 
    Query q = getSession().createQuery(SELECT_MANUFACTURER_PROJECT_DISP_ID); 
    return map; 
} 

正如你可以看到3個表連接的IM,但我認爲這並不重要。我得到正確和O.manufacturer P.dispid,但我不知道如何把它變成HashMap中這樣

O.manufacturer1 -> P.dispid1 
O.manufacturer2 -> P.dispid2 
O.manufacturer3 -> P.dispid3 
[...] 

這是我第一次與休眠所以也許這就是爲什麼我有這個問題,我仍然不知道它是如何工作的。對不起,我的英語和thx提前回答。它不必須是Map<String,String>所以隨時給我任何地圖回答

+1

的createQuery後,q.list()給出名單。使用迭代器遍歷此列表並將所需的數據項放入hashmap中。 – rags

+0

您可以使用ResultSetTransformers。請參考以下鏈接的答案傢伙 http://docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/transform/Transformers.html –

+0

謝謝,我檢查了兩個解決方案的又都是工作,忘記我可以迭代,並且ResultSetTransformers看起來也是可靠的解決方案。 – ojciecmatki

回答

1

可以interate對結果,並把自己變成一個地圖是這樣的:

Query q = getSession().createQuery(SELECT_MANUFACTURER_PROJECT_DISP_ID); 
for(Object o : q.list()) 
{ 
    map.put(o.id(), o); 
} 

乾杯!

相關問題