2016-12-19 9 views
1

Wie kann ich Spring-Data-Monde und Feder-Daten-Neo4j in der gleichen Spring-Boot-Anwendung verwenden?Verwendung von Feder-Daten-Monodb und Feder-Daten-Neo4j zusammen

ich leicht ein verwenden oder die andere im Anschluss an die „Getting Started“ Führer, aber sobald ich versuche, Neo4j zu einer MongoDB Anwendung hinzufügen dann ich Laufzeitfehler erhalten wie:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'application': Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type MongoBook! 

I‘ Führen Sie ein minimales Beispiel bei https://github.com/afaulconbridge/myspring-mongo-neo

+0

Siehe hierzu die Daten der Federdaten. https://github.com/spring-projects/spring-data-examples/tree/master/multi-store. Diese Beispiele sollen Ihnen einen Einblick geben, wie mehrere Federdatenmodule zusammenarbeiten können. – Veeram

+1

Fordern Sie Spring Data MongoDB und Neo4J, die gleichen Pakete zu scannen? Wenn ja, stoßen Sie auf [dieser Fehler] (https://jira.spring.io/browse/DATAES-57). Der verknüpfte Beitrag erläutert, wie Sie das Problem umgehen können. – manish

Antwort

0

Wie @manish darauf hingewiesen, müssen Sie Spring Data MongoDB und Spring Data Neo4J getrennte Pakete scannen. das heißt

@EnableMongoRepositories(basePackageClasses=MongoBook.class) 
@EnableNeo4jRepositories(basePackageClasses=NeoAuthor.class) 

ich das Beispielprojekt bei https://github.com/afaulconbridge/myspring-mongo-neo mit einer Lösung aktualisiert haben.

0

Sie können try this project, die JPA und Neo4J zusammen verwendet. Die Struktur sollte technisch auch mit Mongo funktionieren. Beachten Sie jedoch, dass Mongo das Konzept von Transaktionen nicht unterstützt, sodass Sie möglicherweise keinen expliziten Transaktionsmanager für jedes Spring Data-Projekt definieren müssen.

0

Sie sollten in der Lage sein excludeFilters und includeFilters Parameter zu verwenden bzw. sogar im selben Paket (in den meisten Fällen includeFilters genug ist)

@EnableMongoRepositories(basePackageClasses=MongoBook.class, 
    includeFilters ={@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, 
    classes = {MongoRepository.class})) 

@EnableNeo4jRepositories(basePackageClasses=NeoAuthor.class, 
    includeFilters ={@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, 
    classes = {NeoRepository.class})) 

von includeFilters() Beschreibung

Gibt an, welche Arten kommen für Scannen von Komponenten. Weiter schränkt die Menge der Kandidatenkomponenten von allem in {#basePackages()} auf alles in den Basispaketen ein, das dem gegebenen Filter oder den gegebenen Filtern entspricht.

Verwandte Themen