0

我想将对象转换为短。我的代码是这样的:

List<Batch> lsMaxBatch = em.createNativeQuery(sqlMaxBatch).getResultList();
Iterator iter = lsMaxBatch.iterator();
while (iter.hasNext()) {
    Short batchId = Short.valueOf(iter.next() + "");
    ls.add(batchId);
}

可以吗?

因为如果我这样做转换:

Short batchId = (Short) iter.next();

我收到一个错误:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Short

谢谢

4

1 回答 1

4

像这样的无类型查询返回一个List<Object[]>. 异常消息提示:[Ljava.lang.Object; cannot be cast....

要修复您的代码:

List<Object[]> lsMaxBatch = em.createNativeQuery(sqlMaxBatch).getResultList();
Iterator<Object[]> iter = lsMaxBatch.iterator();
while (iter.hasNext()) {
    Object[] row = iter.next();
    Short batchId = (Short) row[0];
    ls.add(batchId);
}

是的,搞砸了List<Object[]>。为了改进这一点,请使用其中一种返回 a的EntityManager查询创建方法TypedQuery<T>

于 2012-04-24T15:18:48.753 回答