对于每个循环不起作用

时间:2016-04-06 10:06:34

标签: java mysql

这是我的代码 -

    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;

3 个答案:

答案 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在上面的回答中指出的那样,返回的列表可能是一个字符串列表而不是一个对象数组。