Hibernate中的ClassCastException具有未知的HashMap源

时间:2018-04-17 09:27:51

标签: java hibernate classcastexception

我目前停留在ClassCastException,我无法弄清楚到底发生了什么。

注意 为简单起见,查询本身已被更改,因为我认为问题出在其他地方。

情况如下:我想在服务类中检索数据库条目列表:

List<Object[]> queryList = dao.queryGenericArray("SELECT a, b FROM db");

根据我的理解,queryGenericArray方法应该返回 一个对象数组列表,如DAO类中所定义:

List<Object[]> result = q.list();

list()由hibernate定义。

所以现在我的queryList对象数组没有任何错误,到目前为止一直很好。但是当我尝试从queryList访问一个数组时,我得到一个ClassCastException:

java.lang.ClassCastException:java.util.HashMap无法强制转换为[Ljava.lang.Object;

我现在的问题是,为什么以及在哪里将列表条目定义为HashMap?

提前致谢,如果我遗漏了重要信息,请告诉我。

Stacktrace

1 个答案:

答案 0 :(得分:0)

好的,由于对我的初始问题的评论,我想通了。

问题是,我在DAO类中监督(或忽略)了一行代码(我不是这个类的作者):

q.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

此行将object[]转换为地图,非常简洁。

我还需要做的是,将queryGenericArray方法的返回类型从object[]更改为List<HashMap<String, Date>>,然后再将hibernate方法的结果转换为:

List<HashMap<String, Date>> result = q.list();

现在我可以正确访问传递列表中包含的哈希映射中的数据。