1

I need to implement a query form giving the user the opportunity to build his own criterias, based on selecting a property, an operator (=, <>, like, not like, in, not in ...) and a value, combining those with AND , OR logical operators. I wanted to store there criterias in a separate entity in my db.

Has anyone had this kind of a requirement before? Which path should I go: ICriteria or HQL? Is there another option?

I am very thankfull for any ideas, suggestions, pointers...

THX a mil. Darko

4

1 回答 1

2

我实现了一个非常相似的要求。我正在使用 Criteria API,因为您不必使用字符串操作来将查询放在一起,这使其更加稳定。

我在这个问题中发布了一个简单的示例,如何将动态查询放在一起。

在我们的解决方案中,我不允许 OR 操作,因为它使它变得非常复杂(也是 UI 部分)并且性能可能会变差。但后来,我们可能也会实现它。

需要根据您的要求以及查询和数据结构的复杂性做出设计决策。

例如,我为每个查询创建了一个过滤器类。过滤器类包含预定义的字段。这使它更加稳定,因为您始终知道哪些字段可能存在,并且可以将它们放在查询中的某些位置。有些字段需要子查询。在我们的例子中,不可能使其完全通用(这意味着:应该如何构建查询的所有信息都存储在过滤器中)。每个过滤器类都有特定的方法将其转换为查询。这为您提供了很大的灵活性。

我的标准包括对字段的引用、运算符(枚举)和参数。

于 2009-07-14T10:02:00.483 回答