Grails searchable返回域但关系为null

时间:2012-12-22 05:26:21

标签: grails searchable

我有3个域:A,B,C。

A和C通过B有多对多的关系。 A和C是可搜索的。

当我搜索并获取A域列表时,A中的所有字段都可以访问,但是关系字段始终为“null”。为什么我无法访问关系字段?为什么我会'null'?如果我直接访问对象,我会看到一个关系,但是当可搜索返回一个域时,我在关系字段上得到'null'。

PS:我试图使B可搜索,但它看起来像搜索有索引它的问题我没有看到索引B的任何点,因为它只存在为多对多关系。

我需要帮助。我需要能够在可搜索的回报中通过A到达C.

谢谢。

[更新]:我今天制作了一个原型项目(小型数据库)并使域B可搜索。现在我可以访问关系字段了。但是在我的实际项目中,我不想让B可搜索,因为数据库很大而索引需要太长时间。有办法解决吗?

2 个答案:

答案 0 :(得分:2)

您可以重新筛选结果列表中的所有实例,或使用 reload:true 属性进行搜索方法

searchableService.search(query,[reload:true]) 

您可以找到完整的选项列表:http://grails.org/Searchable+Plugin+-+Methods+-+search

  

reload - 如果为true,则从数据库重新加载对象,将它们附加到Hibernate会话,否则从索引重建对象。默认为false

答案 1 :(得分:0)

好的,我相信我解决了我的问题。 第一个结帐链接指向类似的问题:Grails searchable plugin - 请给GalmWing一些信用。

我的解决方案如下,我正在实现自己的控制器,以下代码实现了可搜索的服务调用:

    if (params.q) {
        try{
            def searchResults = searchableService.search(params.q, params)


            searchResults.results.each {
                it.refresh()
            }

            return [carInstanceList:searchResults.results, carInstanceTotal:searchResults.total]
        } catch (SearchEngineQueryParseException ex) {
            return [parseException: true]
        }

正如你所看到的,我有一个循环,在每个域“A”上我刷新。现在刷新从DB获得所有链接的真实记录。现在我将列表返回到GSP,它会提取与“A”域相关联的所有“C”域。

现在这样你可能会受到性能损失,但在我的情况下,搜索实际上无法索引“B”域,它工作了一段时间然后崩溃,所以我没有其他选择,至少对于现在