【问题标题】:Dynamically generating SQL queries in Grails在 Grails 中动态生成 SQL 查询
【发布时间】:2013-09-12 17:20:52
【问题描述】:

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

例如:

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

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

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

【问题讨论】:

    标签: sql grails grails-orm dynamic-queries


    【解决方案1】:

    几个月前@dmahapatro 似乎回答了您的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)
             }
          }
       }
    

    这是你要找的吗?

    【讨论】:

    • 我怎样才能动态地将其他实体/表加入到这个查询中?
    • @Benju 我已经这样做了,假设groups 是与用户的关联。如果您显示一些域以进行采样,将会很方便。 :)
    猜你喜欢
    • 2018-08-02
    • 2021-12-11
    • 2020-04-20
    • 2015-06-11
    • 1970-01-01
    • 2016-10-03
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多