2016-04-06 4 views
1

Я создаю родной запрос и получение списка результатов и я хочу показать, что в ярлыке, но получил ошибкуjava.lang.Object, не может быть преобразован в Backed.Bean

private void requestsButtonClicked() { 
    try { 
    String l_query = ""; 
    l_query = "SELECT * from tablename"; 
    Controller controller = new Controller(ui.getDbConnection()); 
    List<RequestBean> l_list = l_ric.getNativeQueryResult(l_query, RequestBean.class); 
    m_requestResultNumber.setCaption(l_list.size() + ""); 
    } catch (Exception e) { 
    m_logger.error("CATCH", e); 
    org.ids.geoais.common.Process.showErrorMessage(m_RefGeoAISui, e); 
    } 
} 

Это метод родной запрос

public <T> List<T> getNativeQueryResult(String p_query, Class<T> p_class) throws Exception { 
    m_logger.debug("BaseController::getNativeQueryResult()"); 
    // TODO Auto-generated method stub 
    m_logger.debug("SQL = " + p_query); 
    List<T> l_returnList = new ArrayList<T>(); 
    EntityManager l_em = m_connectionInstance.getEntityManager(); 
    Query l_query = l_em.createNativeQuery(p_query); 
    for (Object l_obj : l_query.getResultList()) { 
    if (null != l_obj) { 
     if (p_class.isAssignableFrom(l_obj.getClass())) { 
     l_returnList.add(p_class.cast(l_obj)); 
     } else { 
     m_logger.warn("Cannot cast the object of type " + l_obj.getClass().getName() + " to object of type " + p_class.getName()); 
     } 
    } else { 
     m_logger.warn("Search object in get query result is NULL"); 
    } 
    } 
    return l_returnList; 
} 

Error: [2016-04-06 11:51:38,406] - WARN - (db.BaseController) - Cannot cast the object of type [Ljava.lang.Object; to object of type backend.bean [2016-04-06 11:51:38,406] - WARN - (db.BaseController) - Cannot cast the object of type [Ljava.lang.Object; to object of type backend.bean [2016-04-06 11:51:38,406] - WARN - (db.BaseController) - Cannot cast the object of type [Ljava.lang.Object; to object of type backend.bean

+1

'[Ljava.lang.Object' не' java.lang.Object', это 'Object []'. Распакуйте массив. – chrylis

ответ

1

Вы, кажется, опускаем тип объекта в этом вызове:

Query l_query = l_em.createNativeQuery(p_query); 

Попробуйте с

Query l_query = l_em.createNativeQuery(p_query, p_class); 
+0

Нет, пожалуйста, см. Выше функцию Я устанавливаю имя класса –

+0

Да, но вы не передаете его 'createNativeQuery'. Не могли бы вы попробовать? Взгляните на раздел _3.4.1.6_ здесь: https://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html_single/#query_native – Berger

+0

Да, это решило, что вы были правы в передаче класса –

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

  • Нет связанных вопросов^_^