2010-07-06 12 views
2

J'ai une classe de domaine avec une coutume Id cartographieutilisant le mappage de colonne Id personnalisé avec le plugin interrogeable

... 
... 
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'  
    } 

j'ai eu un problème pour ce travail avec le plugin interrogeable

i ajouter ce qui suit à la classe

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

} 

Je reçois l'erreur suivante après l'insertion de données est terminée

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 

il semble qu'il essaie toujours de trouver une colonne nommée id au lieu d'une colonne nommée ensemblProteinId.

est le plugin interrogeable censé fonctionner avec des colonnes personnalisées, si oui, que fais-je tort?

Répondre

2

Il semble y avoir un problème avec les ID de domaine personnalisés et le plugin interrogeable. En tant que travail autour de vous pouvez mapper la classe en utilisant les annotations de boussole documentées ici:

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

et ici:

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

donc votre classe ressemble à quelque chose comme:

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

    @SearchableProperty 
    String sampleValue 

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

Je voudrais également activer le débogage dans votre config.groovy en ajoutant les lignes

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

à votre bloc de configuration de log4j (vous devrez peut-être supprimer la ligne « org.codehaus.groovy.grails.plugins » du bloc d'erreur!) Cela vous permettra de voir les correspondances de boussole le plug-in est la production.

Jim.