gpt4 book ai didi

java - 从 SQL JPA native 查询迭代结果时出现问题

转载 作者:行者123 更新时间:2023-12-01 12:35:35 24 4
gpt4 key购买 nike

我正在迭代从 native 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;

}

执行失败抛出以下异常:

java.lang.ClassCastException: [Ljava.lang.Object;无法转换为 [Ljava.lang.Class;

在 Debug模式下运行程序后,我发现问题出在该命令行上的 (Class[]) 声明:

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

我想知道如何获得列长度。有人知道怎么做吗?我的实体是 Idioma,它由 String palabra、String idioma 和 int wordID 组成;

提前致谢!

最佳答案

错误说明了一切,这不是 Class 数组,而是 Object 数组。您可以更改角色并使用:

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

关于java - 从 SQL JPA native 查询迭代结果时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com