在Grails中动态生成SQL查询

时间:2013-09-12 17:20:53

标签: sql grails gorm dynamic-queries

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

例如:

  • “通过电子邮件查找用户,例如bob.smith @%”
  • “找到电子邮件相同的用户”john.smith@gmail.com“
  • “查找属于x组成员的用户”
  • “找到ID为42的用户”
  • “找到名字像”Jason P%“的用户

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

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

1 个答案:

答案 0 :(得分:2)

几个月前,@ pmahapatro回答了你的similar question。您目前的情况看起来像:

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)
         }
      }
   }

这是你在找什么?