2012-01-19 4 views
1

Рассмотрю это:результатов перемещения по createSQLQuery, используя для-каждый

//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()); 
     } 
    } 

Что я хочу спросить, что почему утверждение (1) дает следующее сообщение об ошибке несмотря на то что каждый элемент в списке является массивом объектов то есть объект []:

compile: 

    [javac] E:\prac java progs\hiber3\src\Dao.java:45: incompatible types 
    [javac] found : java.lang.Object 
    [javac] required: java.lang.Object[] 
    [javac]    for(Object[] objArr : list){ 
    [javac]         ^
    [javac] 1 error 
+0

попробовать 'для (Object [] objArr : (Object []) list) ' – Vaandu

+0

howpart Member_id - это таблица? предложение where может содержать только выражения с (значение оператора столбца) – user998692

+0

@ user998692: Ошибка ввода! Я сделал это правильно. –

ответ

1

Ваш список объявлен List. Это необработанный тип, поэтому компилятор Java не знает, что находится внутри списка. Все, что он знает, это то, что он содержит экземпляры Object, так как когда-либо класс в Java расширяет Object. Так

for (Object[] objArr : list) 

не компилируется, так как вы пытаетесь присвоить объект типа Object переменной типа Object[]. Для этого нужно сделать бросок.

Итак, есть два решения. Вы знаете, что список на самом деле содержит Object[] экземпляров, так что вы бросили список List<Object[]>:

List<Object[]> list = (List<Object[]>) query.list(); 
for(Object[] objArr : list) { 

Или вы приводите каждый элемент списка Object[]:

for (Object o : list) { 
    Object[] objArr = (Object[]) o; 
1

в ролях list который List (это означает List<?>) до List<Object[]>.

Я имею в виду

List<Object[]> list = (List<Object[]>)query.list(); 
Смежные вопросы