夢中になりそうです。Neo4Jの春のデータを操作するために何時間も費やしました。MongoDBの春のデータを操作することは、それに比べて公園を散歩することでした。
私の目標:
1)Spring-dataを使用して、2つのデータストアMongo、Neo4jを管理します。(間違っている場合は訂正してください。ただし、これら2つのデータクロスデータストアはサポートされていません。つまり、ストアごとに異なるドメインエンティティを使用します)
2)Neo4J埋め込みグラフの操作。
3)Web管理者などのクライアントでグラフを監視する機能があります。
だから私はGoodRelationshipの春のデータの例から始めました
。
POM
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
XML
<neo4j:config storeDirectory="data/graph.db"/>
だから私の最初の質問は、どのクライアントで、その構成でグラフを監視するにはどうすればよいですか?
だから私はもっと読んで、埋め込みグラフ構成のためにNeo4jWebAdminに行きました
私はすべてのステップに従ってそれを試し、ブームになりました!
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.haze.server.repository.mongo.ProfileRepository com.haze.server.services.ProfileServices.profileRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'profileRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NoSuchMethodError: org.springframework.data.repository.core.RepositoryMetadata.getDomainClass()Ljava/lang/Class;
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
... 39 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'profileRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NoSuchMethodError: org.springframework.data.repository.core.RepositoryMetadata.getDomainClass()Ljava/lang/Class;
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1442)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:305)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:876)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:818)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:735)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
... 41 more
Caused by: java.lang.NoSuchMethodError: org.springframework.data.repository.core.RepositoryMetadata.getDomainClass()Ljava/lang/Class;
at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getTargetRepository(MongoRepositoryFactory.java:84)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:137)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:125)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:41)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 49 more
長い話を短くすると、Springコンテキストをロードするために私が見つけた唯一のバージョン構成は
<spring.data.mongo.version>1.0.4.RELEASE</spring.data.mongo.version>
<neo4j.version>1.6</neo4j.version>
<spring-data-neo4j.version>2.0.1.RELEASE</spring-data-neo4j.version>
記事で指定するように以下の依存関係を追加すると、クラッシュしました。
<spring-data-commons-core.version>1.3.0.RELEASE</spring-data-commons-core.version>
さて、mongoをプライマリデータストアとして使用してWeb管理者からグラフを監視するために、neo4j埋め込みグラフとサーバーラッパーを使用して何時間も動作させました。
neo4jサーバーラッパーに古いバージョンを使用した、ある種の幸せだが悲しい原因(1.6の原因が機能しただけです)私は、spring-dataを介してグラフの操作を開始するように動機付けられました。
だから私は最も基本的なノードエンティティを手に入れました:
@NodeEntity
public class ProfileNode {
@GraphId
private Long id;
@Indexed(unique = true)
private String pid = null;
}
いくつかの基本的な操作を試しました:
// save node - OK
ProfileNode node = new ProfileNode();
node.setPid("44ed79b3ea8a99117aa601b16e916ddr");
ProfileNode profile = graphRepo.save(node);
// return NULL
node = graphRepo.findByPropertyValue("pid",
"44ed79b3ea8a99117aa601b16e916ddr");
// throwing exception - java.lang.UnsupportedOperationException:read only index
graphRepo.delete(profile);
基本的に、私が試したほとんどすべての基本的な操作は私にはうまくいきませんでした。
ミッシュマッシュの構成が原因で問題が発生したのか、何か間違ったことをしているのかわかりません。コードで、誰かがアプリケーションの構成を手伝ってくれるか、Springデータを介した最も基本的な操作が機能しない理由を教えてください。自分?
ありがとう。