2

我有一个带有自定义 ID 映射的域类

...
...
String ensemblGeneId
    String ensemblTranscriptId
    String ensemblProteinId
    String proteinSequence
    String topologySequence
    String topologyRatio
    String description
    String geneName

    ..       
    ..                                     
    ..

    static mapping = {
        proteinSequence type:'text'
        topologySequence type:'text'    
        description type:'text' 
        id name:'ensemblProteinId', generator:'assigned'    
    }

我在使用可搜索插件时遇到问题

我将以下内容添加到课程中

    static searchable = {
    id name:'ensemblProteinId'
    except = ['topologySequence','proteinSequence']

}

数据插入完成后收到以下错误

2010-07-06 13:35:08,091 [http-8080-1] ERROR errors.GrailsExceptionResolver  - Id with path [$/Protein/id] for alias [Protein] not found
org.compass.core.engine.SearchEngineException: Id with path [$/Protein/id] for alias [Protein] not found

似乎它仍在尝试查找名为 id 的列,而不是名为 ensemblProteinId 的列。

可搜索插件是否应该与自定义 id 列一起使用,如果是,我做错了什么?

4

1 回答 1

2

自定义域 ID 和可搜索插件似乎确实存在问题。作为一种解决方法,您可以使用此处记录的指南针注释映射类:

http://grails.org/Searchable+Plugin+-+Mapping+-+Compass+annotations

和这里:

http://www.compass-project.org/docs/2.1.4/reference/html/core-osem.html

所以你的班级看起来像:

import org.compass.annotations.*
@Searchable(alias='Test')
...
class Test {
    @SearchableId
    String sampleId

    @SearchableProperty
    String sampleValue

    static mapping = {
        id name:'sampleId', generator: 'assigned'
    }
    ...
}

我还将通过添加以下行来启用 config.groovy 中的调试

 debug  'grails.app',
        'org.codehaus.groovy.grails.plugins.searchable'

到您的 log4j 配置块(您可能需要从错误块中删除 'org.codehaus.groovy.grails.plugins' 行!)这将让您看到插件正在生成的指南针映射。

吉姆。

于 2011-08-04T11:37:05.077 回答