为什么在Java中尝试从Hibernate获取列名时获取错误消息?

为什么在Java中尝试从Hibernate获取列名时获取错误消息?,java,hibernate,names,Java,Hibernate,Names,我试图从Java中的Hibernate查询中获取列名,我进行了一些在线搜索并找到了一个解决方案,但当我尝试代码时,它给了我错误消息: private void executeHQLQuery(String hql,String ActionCommand) { try { Session session=HibernateUtil.getSession(); session.beginTransaction(); Query q=ses

我试图从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(); }
  }
private void executeHQLQuery(String hql,String ActionCommand)
{
尝试
{
Session Session=HibernateUtil.getSession();
session.beginTransaction();
Query q=session.createQuery(hql);
AliasToEntityMapResultTransformer实例=新的AliasToEntityMapResultTransformer();
q、 setResultTransformer(实例);
//q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
列表别名ToValueMapList=q.List();
用于(映射:aliasToValueMapList)
for(Map.Entry:Map.entrySet())System.out.println(Entry.getKey()+“-”+Entry.getValue());
List resultList=q.List();
显示结果(结果列表、操作命令);
session.getTransaction().commit();
}
catch(hibernateeexception he){he.printStackTrace();}
}
错误消息指向以下行:
for(映射图:aliasToValueMapList)

它说:“线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常:sakila.entity.Actor不能转换为java.util.Map”,为什么?如何修复它


在我的例子中,如何将aliasToValueMapList作为EntityBeans列表循环,并获取每个项的值?

我认为您的查询返回EntityBeans列表,而转换无法应用于它们。也许这篇文章会对您有所帮助。

使用
query.setResultTransforer()
将设置结果的形状

您正在分配的结果类型应为
AliasToEntityMapResultTransformer
,并强制转换为
Map

所以它抛出了
ClassCastException

它返回类型为
AliasToEntityMapResultTransformer
的结果

希望这有帮助:)

参考: