我有一个带有自定义Id映射的Domain类
...
...
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列,如果是这样,我做错了什么?
答案 0 :(得分: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'行!) 这将让您看到插件正在生成的罗盘映射。
吉姆。