为什么在Java中尝试从Hibernate获取列名时会收到错误消息?
我试图从Java中的Hibernate查询中获取列名,我在网上进行了一些搜索并找到了一个解决方案,但当我尝试代码时,它给了我错误消息:
private void executeHQLQuery(String hql,String ActionCommand)
{
try
{
Session session=HibernateUtil.getSession();
session.beginTransaction();
Query q=session.createQuery(hql);
AliasToEntityMapResultTransformer INSTANCE=new AliasToEntityMapResultTransformer();
q.setResultTransformer(INSTANCE);
// q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=q.list();
for (Map<String,Object> map : aliasToValueMapList)
for (Map.Entry<String,Object> entry : map.entrySet()) System.out.println(entry.getKey()+" - "+entry.getValue());
List resultList=q.list();
displayResult(resultList,ActionCommand);
session.getTransaction().commit();
}
catch (HibernateException he) { he.printStackTrace(); }
}
错误消息指向以下行:for (Map<String,Object> map : aliasToValueMapList)
它说:“线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:sakila.entity.Actor不能转换为java.util.Map”,为什么?如何修复它
在我的例子中,如何循环使用aliasToValueMapList作为EntityBeans列表,并获取每个项的值
# 1 楼答案
我认为您的查询返回一个EntityBeans列表,转换无法应用于它们。也许this这篇文章会对你有所帮助
# 2 楼答案
使用
query.setResultTransforer()
将设置结果的形状您正在分配的结果应为
AliasToEntityMapResultTransformer
类型,并强制转换为Map
所以它是抛出
ClassCastException
它返回类型为
AliasToEntityMapResultTransformer
的结果希望这有帮助:)
参考:Query