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;