【发布时间】:2013-01-12 20:05:28
【问题描述】:
我正在编写一个使用 Hibernate 获取数据的 Java 应用程序,在我的应用程序中,我有一个输入文本区域,它接受用户输入的 sql 命令字符串并通过 Hibernate 运行它以获取用户查询的任何数据,所以我事先不知道结果表可能是什么样子,因此不知道列名,但我确实需要在列名与数据字段相关的表中显示用户查询结果,如何在 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
它指向第一个for循环,因为我是Hibernate的新手,不知道它是否可行,如何修复上面的代码?有人可以向我展示一些适用于我的示例代码吗?
编辑: 正如下面 Marcel Stör 所提到的,我需要能够允许这两种情况发生,并且不限制用户查询任何数据的能力,最好的方法是什么?
【问题讨论】: