我正在写一个使用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在下面提到的,我需要能够允许两种情况发生并且不限制用户查询任何数据的能力,那么最好的方法是什么?