【发布时间】:2020-04-22 05:57:46
【问题描述】:
我正在转换存储过程以完成 JPA 查询。 SP 查询之一如下,我将其转换为实体类。我将其转换为定义为 Generic 模型的 bean,这会导致 classcastexception。
java类中结果集rs4的SP查询如下:
rs4 Query: select command_value as descr from SCAN_COMMAND_NAME
where command_name = 'AAA' ORDER BY SEQ;
这里将结果集rs4转换为GenericModel:
ResultSet rs4 = (ResultSet) cs.getObject(cnt++);
List commandRotateLi = new BeanProcessor().toBeanList(rs4,GenericModel.class);
session.setAttribute("coRotate", commandRotateLi);
///...
..///
ArrayList coRotate = (ArrayList) session.getAttribute("coRotate");
for(int x = 0; x < coRotate.size(); x++){
gm = (GenericModel) coRotate.get(x);
///
}
上面的代码工作正常。以下是 JPA 转换后的代码。
List<ScanCommandName> scanCommandList = new ArrayList<ScanCommandName>();
query = em.createNamedQuery("ScanCommandName.findByCommandName", ScanCommandName.class);
query.setParameter("commandName", Constants.IMAGE_MAGICK_ROTATE);
scanCommandList = query.getResultList();
scanCommandList.toString() 给了我 5 个 ScanCommandName 对象。我必须将此 List 转换为 List 并按上述方式循环,但在 for 循环中遇到类强制转换异常。
ArrayList list = new ArrayList();
List<GenericModel> coRotate = null;
for(int y=0; y<scanCommandList.size(); y++){
ScanCommandName s = scanCommandList.get(y);
list.add(s.getCommandValue());
}
coRotate = (List<GenericModel>) (List) list;
我现在正在循环遍历列表 coRotate,但在 for 循环的第一行获得类播。
for(int x = 0; x < coRotate.size(); x++){
gm = (GenericModel) coRotate.get(x);
///
}
java.lang.ClassCastException: java.lang.String 无法转换为 com.GenericModel
高度赞赏任何建议。谢谢。
【问题讨论】:
-
您的问题始于您创建原始
ArrayList。s.getCommandValue()返回什么类型?它似乎是String。正如例外所说,您不能将String转换为GenericModel
标签: java exception casting classcastexception