2010-08-05 41 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