嗨, 我是Hibernate的新手。我必须说,它真的为SQL查询简化了一切。然而,目前对返回结果的操作让我头疼不已。
结果以列表形式返回。大多数时候,我真的希望结果是结果集,这样我就可以更容易地操作它,因为使用结果集,您可以通过列名称或索引指定值。在列表中,我被自己的无知所占据。
在某些情况下,我可以将列表检索到JSF数据表中,然后直接调用成员。但我并不总是可以这样做。别问我为什么。@.@ 头晕转。
有没有办法在Hibernate中获取结果集而不是列表?
虽然这个帖子有点旧,但我还是忍不住要发表一下意见:
// Code for iterating over a list of objects
for(MappedClass mappedCless : list){
String name = mappedClass.getName();
String id = mappedClass.getId();
// further logic
}
如果你的数据库很大,而且无法将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();
好的,我设法让它工作了!我很高兴!对于那些试图找到如何操作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
}
List
对象?”而不是询问如何实现解决方案或不正确/错误的方法。顺便说一句,有更好/更清晰的方法来实现这个,但我会把它作为一个练习留给你 :) - BalusC
ResultSet
比List<Entity>
更好的例子。我真的想不出任何一个。 - BalusC