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

ensemblProteinId という名前の列ではなく、id という名前の列を見つけようとしているようです。

検索可能なプラグインはカスタム 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 に答える