这是个非常蛋疼的问题
场景,hibernate读取数据
@Override public List<Object> getRankList(Date stime, Date etime, int type, int num) { String hql = "select p.content, sum(p.count) from ProfileJudgeCount p " + " where p.type = :type and p.date between :stime and :etime " + " group by p.content order by sum(p.count) desc limit 0," + num; return sessionFactory.getCurrentSession().createQuery(hql).setInteger("type", type) .setDate("stime", stime).setDate("etime", etime).list(); }
返回的是一个Object的list,在eclipse环境下调试时的现象如图:
图一:直接查看返回的list对象l,显示如下
图二:点击具体的某个元素,显示如下,能够查看到里面的内容,一个字符串,一个数值,
图三:跟踪查看元素具体内容,是个数组,第一个元素是个字符串,第二个元素是个long型整数
正如图三,toString函数,得到[Ljava.lang.Object;@9654f70类似内容
尝试转换其中的元素,使用getclass函数发现,类型为Java.lang.Object,这里只能强制转换,以便于取出内容
1:自定义实体,实体属性一个字符串,一个long型整数,转换异常
2:发现类似一个JSONArray,转换异常
3:转换String[],转换异常
4:转换List,转换异常
5:转换Serializable,获取byte数组,转成字符串,能看见中文,不过存在乱码
最后转换Object[],成功,如愿,累死
时间: 2024-10-14 17:17:11