有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么在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列表,并获取每个项的值


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

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

    所以它是抛出ClassCastException

    它返回类型为AliasToEntityMapResultTransformer的结果

    希望这有帮助:)

    参考:Query