Ich versuche, feder-data-solr zu verwenden, um darauf zuzugreifen meine Solr-Instanz durch meine Spring-Boot-Anwendung. Ich habe folgende Bean-Klasse:Es wurde kein Konverter gefunden, der vom Typ [java.lang.String] in den Typ [org.springframework.data.solr.core.geo.Point] konvertiert werden könnte.
@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;
}
}
ich folgende Repository implementiert haben, um die entsprechenden Informationen zuzugreifen:
public interface AssociationsRepository extends SolrCrudRepository<Association, String> {
}
ich eine Konfigurationsklasse erstellt haben, die wie die folgende aussieht:
@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;
}
}
Leider, wenn ich versuche, eine Verbindung von meiner Solr Instanz zu lesen bekam ich folgende Fehlermeldung:
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]
Ich verstehe nicht, warum es keinen Konverter finden kann, wenn ich es in der Methode solrTemplate()
explizit definiert habe.
Das ist meine POM Definition:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
Vielen Dank für Ihre Hilfe.
EDIT: Ich habe auch mit verschiedenen BUILD-RELEASE versucht, aber sie sind sehr instabil und ich habe eine Menge Fehler bei der Verwendung gefunden.
Dank Andrea. Ich hatte keine Zeit für diesen Rückschlag. Ich habe zu viel Solr/Spring Proof of Concept-Codierung zu tun, um mit diesem Problem abgelenkt zu werden. Zu schade, obwohl eine Solr-spezifische Point-Klasse definiert und als der richtige Punkt für Solr-Arbeit impliziert wird. –