具有列表的Java类强制转换异常

具有列表的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.

我试图从mysql查询中获取结果并将其存储在对象中,但我有一个类强制转换异常,我在一个使用mysql的Java项目中工作

查询工作正常,结果存储在r列表中

这是我的密码:

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