0

我们在 grails 应用程序上有一个搜索页面。此页面需要能够基于许多属性动态构建查询。

例如:

  • “查找电子邮件用户,例如 bob.smith@%”
  • “查找电子邮件等于“john.smith@gmail.com”的用户
  • “查找属于组 x 的用户”
  • “查找 id 为 42 的用户”
  • “查找名称如“Jason P%”的用户

如果这是一个 Java 应用程序,我会使用休眠条件 API。标准 API 的一个问题是它使任意连接成为不可能。

那么有没有办法像这样动态构建查询?如果可以动态修改 GORM 中的标准 API 是否可行,或者我可以使用完全不同的方法。

4

1 回答 1

2

几个月前@dmahapatro 回答了您的类似问题。您目前的情况如下所示:

def user = User.createCriteria().list{
      if(params.email != null){
          or{
             eq('email', params.email)
             iLike('email', "%${params.email}%")
          }
      } else if(params.id != null){
          idEq(params.id)
      } else if(params.name != null){
          eq('name', params.name)
      } else if(params.memberOf != null){ //This can be optimized
         groups{
            eq('name', params.memberOf)
         }
      }
   }

这是你要找的吗?

于 2013-09-12T17:38:26.217 回答