grails - 根据属性grails过滤GORM对象

标签 grails hql gorm

我有一个过滤器,例如,假设名称John Doe是用户正在搜索的人。

我具有以下域对象结构:Company--->Employee--->Name。其中职员是公司的属性,名称是职员的属性。现在,过滤器用于name属性,但是我需要保留对Company的引用。因此,例如,我做到了:

companyList.events.each {
if(it.employee!=null){
      if(it.employee.name.toString().toLowerCase().contains(filter)){  
         filterSet.add(it)
      }
}

不幸的是,此操作对于1500个条目非常慢。但是,如果我做类似的事情,
def searchResults = Company.findAll{
    employee.name == filter
}

速度非常快,但我需要过滤器才能与部分名称匹配(即说Joh仍与John Doe匹配。我知道有一个名为like的操作,但使用它失败。

任何帮助将非常感激。

最佳答案

我建议您看看使用criteria。因此,在这种情况下,您可以执行以下操作:

def filter = 'joh'
def searchResults = Company.createCriteria().list() {
  employee {
    ilike('name', "%${filter}%")
  }
}

关于grails - 根据属性grails过滤GORM对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389940/

相关文章:

grails - 禁用Grails插件

NHibernate,求和查询

grails - 没有使用H2创建具有byte []的域的grails表

grails - 什么是Grails的Ehcache TTL?

grails - 嵌入Grails应用程序的ActiveMQ代理未监听外部连接

java - 谁能帮我写一个更新查询

postgresql - 以与给定列表相同的顺序从 HQL 查询获取结果

grails - 保存域实例时是否可以使用映射GORM 6 “defaultValue”

grails - 如何在grails中建立一对一的双向关系?

java - grails 中的 Google map 插件