0

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

4

2 回答 2

0

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

于 2012-12-21T04:48:47.957 回答
0

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

您分配的 Result 应该是 typeAliasToEntityMapResultTransformer和 cast to Map

所以它是扔的ClassCastException

它返回类型的结果AliasToEntityMapResultTransformer

希望这可以帮助 :)

参考:查询

于 2012-12-21T05:01:01.530 回答