我正在寫一個使用Hibernate獲取數據的Java應用程序,在我的應用程序中我有一個輸入文本區域,它需要用戶輸入sql命令字符串並通過Hibernate運行以獲取用戶查詢的任何數據,所以我事先不知道結果表可能是什麼樣子,因此不知道列名,但是我確實需要在列表中顯示用戶查詢結果,列名與數據字段相關,如何在Hibernate中實現這一點?我試過下面的代碼:如何從Java中的Hibernate查詢結果中獲取列名?
Session session=HibernateUtil.getSession();
session.beginTransaction();
Query q=session.createQuery(hql);
AliasToEntityMapResultTransformer INSTANCE=new AliasToEntityMapResultTransformer();
q.setResultTransformer(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());
它給了我下面的錯誤信息:異常在線程「AWT-EventQueue的-0」 java.lang.ClassCastException:sakila.entity.Actor不能轉換爲Java。 util.Map
它指向1st for循環,因爲我是Hibernate的新手,不知道它是否可行,如何修正上面的代碼?有人能告訴我一些適用於我的情況的示例代碼嗎?
編輯: 正如MarcelStör在下面提到的,我需要能夠允許兩種情況發生並且不限制用戶查詢任何數據的能力,那麼最好的方法是什麼?