Grails可搜索的关系

时间:2012-12-21 21:45:39

标签: grails searchable

我想知道如何通过搜索返回特定域名? 例如,我们有域A和B.两个域都是可搜索的并且有关系:A有很多B,B属于A.另一个案例A和B有多对多的关系。

现在当我搜索项目时,我必须总是返回一个项目。在我的情况下,让我说我在B中找到了匹配,我需要为每个B返回所有的As。其他方式应该也可以。

目前我做的搜索查询是可搜索的服务:

def searchResults = searchableService.search(params.q, params)

有没有办法为任何搜索结果获取所有相关的A域?

谢谢。

1 个答案:

答案 0 :(得分:2)

使您的域(A& B)可搜索,然后在可搜索的属性中添加DomainObject component:true

class A{
  String name

  static hasMany = [bclass: B]
  static searchable = {
     bclass component: true
  }
}

class B{
  String color

  static belongsTo= [aclass: A]
  static searchable = true
}

假设在 B 中有一些行颜色字段值为'red'

A.search("red") 

将返回 A 的所有实例,其子类 B 颜色字段值为“红色”