检索Hibernate查询结果作为结果集而不是列表

时间:2011-03-14 09:10:46

标签: hibernate jsf java-ee

部屋, 我刚接触休眠。我不得不说它确实简化了SQL查询的所有内容。但是,操纵返回的结果对我来说是一件令人头疼的事。

结果以列表形式返回。大多数时候我真的希望结果在结果集中,以便我可以更容易地操作它,因为使用结果集,您可以按列名或索引指定值。在List中,我几乎拥有自己的noobity。

在某些情况下,我可以将列表检索到JSF数据表中,然后直接调用该成员。我不能总是这样做。不要问我为什么。 @。@旋转头。

有没有办法获取结果集而不是hibernate的列表?

3 个答案:

答案 0 :(得分:4)

稍微陈旧的线索,但我无法抗拒:

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

答案 1 :(得分: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
}

希望这有帮助。

答案 2 :(得分:1)

如果您拥有庞大的数据库并且无法将List结果放入内存,则可能需要此选项。使用scroll()而不是list():

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();