Java 使用for each遍历createSQLQuery的结果

Java 使用for each遍历createSQLQuery的结果,java,hibernate,foreach,Java,Hibernate,Foreach,考虑这一点: //members is a table. String sql="select * from members"; Query query = session.createSQLQuery(sql); List list = query.list(); /***Ist part**This part is working well.******************************/ for(int j=0;j<list.size();j++){

考虑这一点:

//members is a table.
String sql="select * from members"; 

Query query = session.createSQLQuery(sql);
List list = query.list();   

/***Ist part**This part is working well.******************************/

for(int j=0;j<list.size();j++){
    Object [] obj= (Object[])list.get(j);
    for(int i=0;i<obj.length;i++)
        System.out.println(obj[i]);
}

/***2nd part********This part is not working.Why???******************/

    for( Object[] objArr : list){       //---------->(1)

         for(Object m:objArr){

        System.out.println(((Member)m).getFirstname());
        }
    }

list
list
(意思是
list
)转换为
list

我是说

List<Object[]> list = (List<Object[]>)query.list();   
List List=(List)query.List();

您的列表被声明为
list
。这是一个原始类型,因此Java编译器不知道列表中的内容。它只知道它包含
对象的实例,因为Java中的类扩展了对象。所以

for (Object[] objArr : list)
不编译,因为您正试图将
object
类型的对象分配给
object[]
类型的变量。要做到这一点,需要演员阵容

因此,有两种解决方案。您知道列表实际上包含
Object[]
实例,因此将列表强制转换为
list


尝试
for(Object[]objArr:(Object[])list)
为什么成员id是表?where子句只能包含具有(列名运算符值)@user998692的表达式:键入错误!我已经纠正了。@vanathi:它将给出错误:
[javac]found:java.util.List[javac]required:java.lang.Object[]
for (Object[] objArr : list)
List<Object[]> list = (List<Object[]>) query.list();
for(Object[] objArr : list) {
for (Object o : list) {
    Object[] objArr = (Object[]) o;