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

将Hibernate查询结果检索为结果集而不是列表,hibernate,jsf,jakarta-ee,Hibernate,Jsf,Jakarta Ee,呵呵,, 我刚开始冬眠。我不得不说,它确实简化了SQL查询的一切。然而,目前操纵返回的结果对我来说是一件头疼的事 结果作为列表返回。大多数时候,我真的希望结果在结果集中,这样我就可以像使用结果集一样更容易地操作它,您可以通过列名或索引指定值。在清单中,我几乎是属于自己的noobity 在某些会话中,我可以将列表检索到JSF数据表中,然后直接调用该成员。我不能总是这样做。别问我为什么。@旋转头 有没有办法在hibernate中获取结果集而不是列表?好的,我设法让它工作了!我太高兴了! 对于那些试图

呵呵,, 我刚开始冬眠。我不得不说,它确实简化了SQL查询的一切。然而,目前操纵返回的结果对我来说是一件头疼的事

结果作为列表返回。大多数时候,我真的希望结果在结果集中,这样我就可以像使用结果集一样更容易地操作它,您可以通过列名或索引指定值。在清单中,我几乎是属于自己的noobity

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


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

好的,我设法让它工作了!我太高兴了! 对于那些试图找到如何操作Hibernate查询返回的列表的人,基本上我所做的是

//previous code
list = (List<MappedClass>)query.list();
//以前的代码
list=(list)query.list();
从那里,列表将包含映射类,您可以通过迭代器访问它,然后使用getter检索值。 范例

//以前的代码

对于(int i=0;i稍旧的线程,但我无法抵抗:

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

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


你想让Hibernate返回
ResultSet
s而不是实体列表?如果是这样,为什么你需要Hibernate?至少举一个例子说明为什么
ResultSet
List
好。我真的无法想象任何一个。BalusC,我从来没有说过ResultSet比List好。我知道Hibernate的存在是有原因的。我只是ant似乎根据列名解析列表,例如在ResultSet中,我可以执行ResultSet.getString(索引)或ResultSet.getString(columnName)。在列表中,显然我不能这样做。我能为此做些什么吗?虽然这条线索很晚了,但这是其他搜索此问题的人的答案:迟做总比不做好!这是有用的信息@Crafter哦,这是你的实际问题吗?在未来,试着更加小心地问问题。例如。“如何迭代Java中对象的
列表”
,而不是询问如何实现变通方法和/或不同/错误的解决方案。顺便说一句,有更好/更干净的方法可以做到这一点,但我将把它作为练习留给您:)有吗?你能告诉我吗?我很抱歉,如果我的问题不能被社区,而不是以英语为母语的人真正理解。
    // Code for iterating over a list of objects
    for(MappedClass mappedCless : list){
        String name = mappedClass.getName();
        String id = mappedClass.getId();
        // further logic
    }
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();