有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在迭代SQL JPA本机查询的结果时遇到问题

我正在迭代从原生SQL查询获得的对象,以便能够打印一个实体的属性。对于这个提议,我使用以下代码:

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;

}

执行失败,引发以下异常:

爪哇。lang.ClassCastException:[Ljava.lang.Object;不能强制转换为[Ljava.lang.Class

在debbug模式下运行程序后,我发现问题在于在这个命令行上声明(Class[]):

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

我想知道怎样才能得到列的长度。有人知道怎么做吗?我的实体是Idioma,它由String palabra、String Idioma和int wordID组成

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    这个错误说明了一切,它不是类的数组,而是对象的数组。您可以更改演员阵容并使用:

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