2014-09-02 2 views
0

한 엔티티의 속성을 인쇄 할 수 있도록 원시 SQL 쿼리에서 얻은 개체를 반복합니다. 이것이 내가 다음 코드를 사용하고 제안의 경우 :SQL JPA 네이티브 쿼리의 결과 반복 문제

public<T> ArrayList exectuteStoreProcedure(String sqlQuery){ 
    setEntities(); 
    int colcount = 0; 
    int rowcount = 0; 
    int rowcounter = 0; 

    ArrayList a = new ArrayList(); 
    try{ 

     Query query = em.createNativeQuery(sqlQuery); 
     rowcount = query.getResultList().size(); 
     colcount = ((Class[]) query.getResultList().get(0)).length; 

     String [][] array = new String [rowcount][colcount]; 

     for (Iterator<String[]> rs = query.getResultList().iterator(); rs.hasNext();) { 
      String[] obj = rs.next(); 
      String[] record = new String[colcount]; 
      System.arraycopy(obj, 0, record, 0, colcount); 
      array[ rowcounter++] = (String[]) record; 
     } 


     a.add(array); 

     }catch(Exception ex){ 
     et.rollback(); 
    } 
    closeEntities(); 

    return a; 

} 

실행 다음과 같은 예외를 던지는 실패

java.lang.ClassCastException가 : [Ljava.lang.Object; [Ljava.lang.Class;

colcount = ((Class[]) query.getResultList().get(0)).length; 

은 내가 열 길이를 얻을 수 있는지 궁금 :

는 debbug 모드를 통해 프로그램을 실행 한 후 그 문제는이 명령 줄에서 (클래스 [])의 declartion와 것으로 나타났습니다. 아무도 어떻게 알 수 있습니까? 내 실체는 Idioma이고 String palabra, String idioma 및 int wordID로 구성됩니다.

미리 감사드립니다.

답변

1

오류가 클래스의 배열이 아닌 모든 오류라고 말하면 Object 배열입니다. 캐스트를 변경하여 사용할 수 있습니다.

colcount = ((Object[]) query.getResultList().get(0)).length;