使用List <object>的Java类转换异常

时间:2016-07-27 08:15:55

标签: java mysql

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

查询工作正常,我将结果存储在using System; using System.Collections.Generic; using Newtonsoft.Json; public class RootObject { public string url_short { get; set; } public string url_long { get; set; } public int type { get; set; } } public class Program { static public void Main() { string j = "[{\"url_short\":\"http:\\/\\/sample.com\\/8jyKHv\",\"url_long\":\"http:\\/\\/www.sample.com\\/\",\"type\":0}]"; List<RootObject> ro = JsonConvert.DeserializeObject<List<RootObject>>(j); Console.WriteLine(ro[0].url_short); } }

这是我的代码:

r list<Object>

错误日志是:

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;

2 个答案:

答案 0 :(得分:0)

对于我来说,目前尚不清楚是什么样的事情?#34;繁荣&#34;是。但是很明显,无论是数据库结构还是hibernate映射,或者两者都不是很合理。如果你做得对,你不必手动在你的结果中找到你想要的对象,就像在旧的JDBC中一样。避免这样的样板代码是人们发明像hibernate这样的框架的原因。 如果您不确定如何正确进行映射,这对于stackoverflow来说是一个很好的问题。

答案 1 :(得分:-1)

查看https://howtoprogramwithjava.com/java-cast/

您正在该线上执行完全不需要且脱离上下文的演员。

您可以使用DataGridRow

Object[]转换为List<Object>