休眠中的 ClassCastException,HashMap 的来源未知
ClassCastException in hibernate with unknown source of HashMap
我目前卡在 ClassCastException 上,我无法弄清楚到底发生了什么。
注意 为简单起见,查询本身已被更改,因为我认为问题出在其他地方。
情况如下:我想在我的服务 class 中检索数据库条目列表:
List<Object[]> queryList = dao.queryGenericArray("SELECT a, b FROM db");
以我的理解,queryGenericArray 方法应该 return
DAO class:
中定义的对象数组列表
List<Object[]> result = q.list();
list() 由休眠定义。
所以现在我的 queryList 对象数组没有任何错误,到目前为止一切顺利。但是当我尝试从 queryList 访问一个数组时,我得到一个 ClassCastException 声明:
java.lang.ClassCastException: java.util.HashMap 无法转换为 [Ljava.lang.Object;
我现在的问题是,为什么以及在哪里将列表条目定义为 HashMap?
在此先感谢,如果我遗漏了任何重要信息,请告诉我。
好的,我明白了,感谢对我最初问题的评论。
问题是,我监督(或忽略)了 DAO 中的一行代码 class(我不是此 class 的作者):
q.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
这一行,将 object[]
转换为地图,简明扼要。
我还必须做的是,首先将我的 queryGenericArray 方法的 return 类型从 object[]
更改为 List<HashMap<String, Date>>
,然后像这样转换休眠方法的结果:
List<HashMap<String, Date>> result = q.list();
现在我可以正确访问传递列表中包含的哈希图中的数据了。
我目前卡在 ClassCastException 上,我无法弄清楚到底发生了什么。
注意 为简单起见,查询本身已被更改,因为我认为问题出在其他地方。
情况如下:我想在我的服务 class 中检索数据库条目列表:
List<Object[]> queryList = dao.queryGenericArray("SELECT a, b FROM db");
以我的理解,queryGenericArray 方法应该 return DAO class:
中定义的对象数组列表List<Object[]> result = q.list();
list() 由休眠定义。
所以现在我的 queryList 对象数组没有任何错误,到目前为止一切顺利。但是当我尝试从 queryList 访问一个数组时,我得到一个 ClassCastException 声明:
java.lang.ClassCastException: java.util.HashMap 无法转换为 [Ljava.lang.Object;
我现在的问题是,为什么以及在哪里将列表条目定义为 HashMap?
在此先感谢,如果我遗漏了任何重要信息,请告诉我。
好的,我明白了,感谢对我最初问题的评论。
问题是,我监督(或忽略)了 DAO 中的一行代码 class(我不是此 class 的作者):
q.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
这一行,将 object[]
转换为地图,简明扼要。
我还必须做的是,首先将我的 queryGenericArray 方法的 return 类型从 object[]
更改为 List<HashMap<String, Date>>
,然后像这样转换休眠方法的结果:
List<HashMap<String, Date>> result = q.list();
现在我可以正确访问传递列表中包含的哈希图中的数据了。