使用hibernate进行动态查询

时间:2011-01-23 09:12:43

标签: java hibernate relational-database dynamic-sql

我有一个应用程序,我需要让最终用户通过某种类型的向导定义他们的选项来创建adhoc报告,其过程类似于:

1) User selects the table(s) he wants to query  (eg person, project, activities)
2) defines the list of fields he requires (eg name, email, projects, activity, activity info) 
3) supplies the filter criteria for the records to return (eg Person name, ongoing activities)

我正在使用带有超过100个表的postgres数据库的hibernate。当然,我不能让用户挑选任何这些表,因为它们毫无意义。但是有大约10个主要表格(例如上面的表格)。

所以我需要有关如何:

的建议
  1. 是否有可能以及如何动态定义这些表与其他关系之间的连接和关系?
  2. 如果没有,(或太复杂),预定义这些连接和数据库路径的最佳方法是什么,然后让用户只参数化过滤器?
  3. 从多个hibernate对象获取数据,然后让用户选择他想要的字段。
  4. 我非常感谢所有的反馈,如果我没有正确解释需要,请写下来。