2012-10-10 4 views
0

Это функция, которая извлекает список результатов из БД.невозможно извлечь данные из списка

public List<util> deep(){ 
    Query query = getEntityManager().createNativeQuery("SELECT state,max(pop2010) from uscensuspopulationdata where state <> 0 "); 
    List<util> l= query.getResultList(); 
    return l; 
} 

Класс Util:

public class util{ 
    int state; 
    int pop2010; 

    public util(int state, int pop2010) { 
     this.state = state; 
     this.pop2010 = pop2010; 
    } 

    @Override 
    public String toString() { 
     return "util{" + "state=" + state + ", pop2010=" + pop2010 + '}'; 
    } 
} 

При попытке извлечь значения, как это, я получаю ClassCastException:

List<util> l = handle.deep(); 
for (util u : l) { 
    out.print(u); 
} 
+0

Является ли список возвращенным методом getResultList() типа ? –

+0

Nope .. возврат данных типа Список – user1736333

+0

Тогда это ваша проблема. Когда вы используете цикл foreach, он пытается подвергнуть объекты в вашем списке объектам типа 'util', что, вероятно, невозможно. Узнайте, какой конкретный тип списка из исходного кода, а затем создайте функцию или фабричный класс, чтобы взять элементы из списка и сделать свой собственный. –

ответ

0

Если вы хотите получить список util объектов, которые вы должны сможет использовать следующий запрос:

Query query = getEntityManager().createNativeQuery("SELECT new util(state,max(pop2010)) from uscensuspopulationdata where state <> 0 "); 
List<util> l = query.getResultList();  

Где вы называете конструктор утилиты. Этот вариант использования указан here in the HQL docu.

Если uscensuspopulationdata является сопоставляются Entity вы также не должны использовать NativeQuery, но вы можете просто использовать getEntityManager().createQuery(...).

И, наконец, считается хорошим стилем в java, чтобы использовать первую букву класса.

Смежные вопросы