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

问题描述 投票:0回答:3

嘿嘿, 我是冬眠新手。我不得不说它确实简化了 SQL 查询的一切。然而,操作返回的结果目前对我来说是一个头疼的问题。

结果以列表形式返回。大多数时候,我真的希望结果位于结果集中,以便我可以更轻松地操作它,因为使用结果集,您可以通过列名或索引指定值。在《List》中,我几乎被自己的小白所拥有。

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

有没有办法获取结果集而不是休眠列表?

hibernate jsf jakarta-ee
3个回答
4
投票

如果您有庞大的数据库并且无法将列表结果放入内存中,您可能需要这个。使用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();

4
投票

有点旧的线程,但我无法抗拒:

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

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
}

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.