1

夢中になりそうです。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データを介した最も基本的な操作が機能しない理由を教えてください。自分?

ありがとう。

4

3 に答える 3

0

spring-data-mongodb-1.1.0.RC1とが必要spring-data-neo4j-2.1.0.RC4です。どちらも同じspring-data-commons-core依存関係を持っています。

neo4j + mongo バージョンの競合がある spring-data

于 2012-10-10T14:31:19.800 に答える
0

SDN 2.1.RC4 にアップグレードする必要があります。数週間で GA になります。

次に、開始するためのコードをいくつか示します。 /repository/DerivedFinderTests.java - 派生ファインダーに熱心でない場合は、findByPropertyValue のテストを追加できますが、少なくともこれは、その 1 つのファイルだけを使用してすぐに使用できます。つまり、Spring 構成をエラーの原因として排除できます。

クロスストアの場合: MongoDB を使用したクロスストアにはほとんど意味がありません。私にとってクロスストアとは、複数のデータ ソースにわたるトランザクションに関するものです。MongoDB + Neo では、さまざまなリポジトリを構築し、アプリケーション レベルでそれらを同時に使用するのに十分なだけのことを行います。

于 2012-10-01T08:24:12.900 に答える
0

Lasse が言ったように 2.1.RC4 にアップデートしてください。

SDNで組み込みサーバーを使用することについては、docsに記載されています。

リポジトリはどのように見えますか?

于 2012-10-07T21:55:44.387 に答える