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

を使用 query.setResultTransforer()すると、結果の形状が設定されます。

Result を割り当てているのは、タイプAliasToEntityMapResultTransformerであり、にキャストする必要がありMapます。

だから投げてClassCastExceptionいる。

type の結果を返しますAliasToEntityMapResultTransformer

お役に立てれば :)

参考:クエリ

于 2012-12-21T05:01:01.530 に答える
0

あなたのクエリは EntityBeans のリストを返すと思いますが、それらに変換を適用することはできません。多分この記事はあなたを助けるでしょう。

于 2012-12-21T04:48:47.957 に答える