这是我的代码 -
StringBuffer queryString = new StringBuffer();
queryString.append("select m.user_message ");
queryString.append("from message m");
Query query = entityManager.createNativeQuery(queryString.toString());
List<Object[]> results = query.getResultList();
System.out.println(results);
for (Object[] result : results) {
System.out.println(result);
}
它打印“System.out.println(results);”的正确答案,但不要为每个循环输入。 这里的错误是: -
java.lang.String cannot be cast to [Ljava.lang.Object;
答案 0 :(得分:4)
根据您获得的例外情况,query.getResultList()
似乎会返回List<String>
,而不是List<Object[]>
。将您的代码更改为
List<String> results = query.getResultList();
System.out.println(results);
for (String result : results) {
System.out.println(result);
}
答案 1 :(得分:1)
您正在打错阵列
改为:
for (Object[] result : results) {
for (Object obj : result) {
System.out.println(obj);
}
}
或者更好
for (Object[] result : results) {
Arrays.toString(result));
}
答案 2 :(得分:0)
您可以通过将System.out.println(results);
更改为System.out.println(results ==null ? "empty", results.size());
对我而言,由于报告的异常java.lang.String cannot be cast to [Ljava.lang.Object;
,它似乎正在进入循环,但正如Erna在上面的回答中指出的那样,返回的列表可能是一个字符串列表而不是一个对象数组。