2017-06-29 6 views
2

J'essaie d'utiliser spring-data-solr pour accéder à mon instance Solr via mon application de démarrage Spring. J'ai la classe de haricots suivants:Aucun convertisseur trouvé capable de convertir du type [java.lang.String] au type [org.springframework.data.solr.core.geo.Point]

@SolrDocument(solrCoreName = "associations") 
public class Association implements PlusimpleEntityI { 
    @Id 
    @Indexed 
    private String id; 
    @Indexed 
    private String name; 
    @Indexed 
    private Point location; 
    @Indexed 
    private String description; 
    @Indexed 
    private Set<String> tags; 
    @Indexed 
    private Set<String> topics; 
    @Indexed 
    private Set<String> professionals; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public Point getLocation() { 
     return location; 
    } 

    public void setLocation(Point location) { 
     this.location = location; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public Set<String> getTags() { 
     return tags; 
    } 

    public void setTags(Set<String> tags) { 
     this.tags = tags; 
    } 

    public Set<String> getTopics() { 
     return topics; 
    } 

    public void setTopics(Set<String> topics) { 
     this.topics = topics; 
    } 

    public Set<String> getProfessionals() { 
     return professionals; 
    } 

    public void setProfessionals(Set<String> professionals) { 
     this.professionals = professionals; 
    } 
} 

J'ai mis en place le dépôt suivant afin d'accéder aux informations correspondantes:

public interface AssociationsRepository extends SolrCrudRepository<Association, String> { 
} 

J'ai créé une classe de configuration qui ressemble à la suivante:

@Configuration 
@EnableSolrRepositories(basePackages = {"com.package.repositories"}, multicoreSupport = true) 
public class SolrRepositoryConfig { 
    @Value("${solr.url}") 
    private String solrHost; 

    @Bean 
    public SolrConverter solrConverter() { 
     MappingSolrConverter solrConverter = new MappingSolrConverter(new SimpleSolrMappingContext()); 
     solrConverter.setCustomConversions(new CustomConversions(null)); 
     return solrConverter; 
    } 

    @Bean 
    public SolrClientFactory solrClientFactory() throws Exception { 
     return new MulticoreSolrClientFactory(solrClient()); 
    } 

    @Bean 
    public SolrClient solrClient() throws Exception { 
     return new HttpSolrClient.Builder(solrHost).build(); 
    } 

    @Bean 
    public SolrOperations associationsTemplate() throws Exception { 
     SolrTemplate solrTemplate = new SolrTemplate(solrClient()); 
     solrTemplate.setSolrConverter(solrConverter()); 
     return solrTemplate; 
    } 

} 

Malheureusement, lorsque je tente de lire une association de mon exemple Solr je suis l'erreur suivante:

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [org.springframework.data.solr.core.geo.Point] 

Je ne comprends pas pourquoi il n'est pas capable de trouver un convertisseur si je l'ai explicitement défini dans la méthode solrTemplate().

C'est ma définition POM:

<dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-solr</artifactId> 
     <version>2.1.4.RELEASE</version> 
    </dependency> 

Merci pour votre aide.

EDIT: J'ai également essayé avec différents BUILD-RELEASE, mais ils sont très instables et j'ai trouvé beaucoup d'erreurs en les utilisant.

Répondre

1

Alessandro, comme vous pouvez le voir directement dans la classe GeoConverters sur GitHub, les convertisseurs mis en œuvre sont pour:

org.springframework.data.geo.Point 

et non pour:

org.springframework.data.solr.core.geo.Point 

utiliser simplement cette classe et vous n Pas besoin d'un convertisseur personnalisé pour cela. Spring Data for Solr effectuera la conversion pour vous. J'utilise une version légèrement corrigée du 3.0.0 M4, mais je suis à peu près certain que cette solution devrait également s'appliquer à votre cas.

+0

Merci Andrea. Je n'ai pas eu le temps pour cet échec. J'ai trop de code de validation Solr/Spring à faire pour être dérouté avec ce problème. Dommage, bien qu'une classe Point spécifique à solr soit définie et impliquée comme point correct à utiliser pour le travail Solr. –