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

时间:2012-12-21 02:53:35

标签: java hibernate names

我试图从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列表循环并获取每个项的值?

2 个答案:

答案 0 :(得分:0)

我认为您的Query会返回EntityBeans列表,并且转换无法应用于它们。也许this文章可以帮助你。

答案 1 :(得分:0)

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

您指定的结果应为AliasToEntityMapResultTransformer类型并转换为Map

所以它正在抛出ClassCastException

返回AliasToEntityMapResultTransformer类型的结果。

希望这会有所帮助:)

参考:Query