具有列表的Java类强制转换异常
我试图从mysql查询中获取结果并将其存储在对象中,但我有一个类强制转换异常,我在一个使用mysql的Java项目中工作 查询工作正常,结果存储在r列表中 这是我的密码:具有列表的Java类强制转换异常,java,mysql,Java,Mysql,我试图从mysql查询中获取结果并将其存储在对象中,但我有一个类强制转换异常,我在一个使用mysql的Java项目中工作 查询工作正常,结果存储在r列表中 这是我的密码: List<QReport> result = new ArrayList<QReport>(); try { List<Object> r = boomFacade.getEm().createNativeQuery("SELECT boom.name, boom.
List<QReport> result = new ArrayList<QReport>();
try {
List<Object> r = boomFacade.getEm().createNativeQuery("SELECT boom.name, boom.date, boom.type "
+ "FROM boom "
+ "where boom.type = 'REQUESTED' "
+ "AND boom.boomNumber = ? "
+ "AND boom.date >= ? "
+ "AND boom.date <= ? "
+ "ORDER BY boom.name, boom.id")
.setParameter(1, boomNumber)
.setParameter(2, start)
.setParameter(3, end)
.getResultList();
for (Object l: r){
List<Object> ls = (ArrayList<Object>) l; // Class cast execption here
QReport report = new QReport();
report.setName((String) ls.get(0));
Date eventDate = new Date( ((Timestamp)ls.get(1)).getTime());
report.setDate(eventDate);
report.setType((String) ls.get(2));
result.add(report);
}
}
catch (Exception e){
e.printStackTrace();
}
return result;
看看
你在这句台词上表演了一个完全不需要的、断章取义的演员阵容
可以使用以下命令将对象[]转换为列表:Arrays.asListl 对我来说,繁荣是什么样的东西还不清楚。但很明显,您的数据库结构或hibernate映射或两者都不是很合理。如果您做得正确,您就不必像在好的旧JDBC中那样手动地在结果中四处搜索并粘贴所需的对象。避免这种样板代码正是人们发明hibernate等框架的原因。
如果您不确定如何正确映射,这将是stackoverflow的一个好问题。根据错误,l是一个对象[],而不是列表。无论对象是什么,它都不是列表。错误消息告诉您有一个对象[]一个对象数组,您正试图将其强制转换到ArrayList。数组不是列表,因此不能将其强制转换为列表。
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List