2014-09-02 45 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;

在debbug模式下運行程序後,我發現,這個問題是與(類[])這個命令行declartion:

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

我想知道我怎麼能拿列的長度。有誰知道如何?我的實體是Idioma,它由String palabra,String idioma和int wordID組成;

在此先感謝!

回答

1

錯誤說這一切,這不是一個類的數組,它是作爲對象的數組。您可以更改演員表並使用:

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