Grails可搜索的返回域,但关系为无效



我有3个域:a,b,C。

a和c通过B具有多一关系。A和C可搜索。

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

p.s:我试图使B可搜索,但看起来可以搜索在索引上,最重要的是,我认为索引b中的任何意义都不是为了是为了多对多的关系而存在。

请我需要帮助。我需要能够通过可搜索的返回时通过A到达C。

谢谢。

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

您可以在结果列表中重新刷新所有实例,也可以使用重新加载:true seach方法的属性

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

您可以找到选项的完整列表:http://grails.org/searchable plugin - methods - search

重新加载 - 如果为true,则将对象从数据库中重新加载,将它们连接到休眠的会话,否则对象将从索引重建。默认为false

好吧,我相信我解决了问题。第一个结帐链接指向类似问题:可搜索的插件 - 请给予一些信用。

我的解决方案正在遵循,我正在实现自己的控制器,并按照实施可搜索服务的代码来调用:

    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"我都会刷新。现在,Refresh通过所有链接从数据库获得真实记录。现在,我将列表返回到GSP,并提取与" A"域关联的所有" C"域。

现在,您可能会受到绩效罚款,但是在我的情况下,可搜索实际上无法索引" b"域,它工作了一段时间,然后崩溃了,所以我没有其他选择,至少适用于现在。

最新更新