2011-03-14 43 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();