0

spring-dataを使用して、springブートと別にneo4jリポジトリとcassandraリポジトリを設定しました。しかし、同じプロジェクトで2つのリポジトリを使用しようとすると、期待どおりに機能しません。同じ春のブートアプリケーションでneo4jリポジトリとcassandraリポジトリを設定する方法

これは私のフォルダ構造です。全てのリポジトリは、各DAOと各ばねdatarepositoryを拡張

----- org.test.project

-----controller 
     BarController 
     FooController 
-----models 
     -----dao 
      -----cassandra 
       BarDAO 
       FooDAO 
      -----neo4j 
       BarDAO 
       FooDAO 
-----repositories 
     -----cassandra 
      BarRepository 
      FooRepository 
     -----neo 
      BarRepository 
      FooRepository 
-----services 
     CassandraService (Has cassandra repositories @Autowired) 
     NeoService(Has neo repositories @Autowired) 
TestApp.java 

注意。

この構成で実行すると、次のエラーが発生します。

Field airportRepository in org.test.project.TestApp required a bean of type 'org.test.project.repositories.cassandra.BarRepository' that could not be found. 

リポジトリ名を変更しようとしました。その後、それは動作するようになりました。

最初の質問は、我々は、彼らが異なるパッケージであり、それはそれは、認証ヘッダにエラーが発生しました。この時間を仕事に始めたものの

作業を始めると同じ名前を持つことはできませんされています。

org.neo4j.ogm.drivers.http.request.HttpRequestException: http://localhost:7474/db/data/transaction/commit: No authentication header supplied. 

私はすでに、私は唯一のNeo4jリポジトリを使用していたときに私がやったのと同じ方法をogm.propertiesを追加しました。しかし、彼らはもはや適用されないようです。だから私はapplication.propertiesに次のように追加しました。

spring.data.neo4j.password=neo4j 
spring.data.neo4j.username=neo4j 

2つ目の質問は、私はちょうど私が唯一のNeo4jでやったのと同じ方法としてのNeo4jを設定することができますどのように、ありますか?私はogm.propertiesで次のように定義しました。これをneo4j構成にどのように適用できますか?上記の変更により

#Driver, required 
driver=org.neo4j.ogm.drivers.bolt.driver.BoltDriver 

#URI of the Neo4j database, required. If no port is specified, the   
#default port 7687 is used. Otherwise, a port can be specified with 
#bolt://neo4j:[email protected]:1234 

URI=bolt://neo4j:[email protected] 

#Connection pool size (the maximum number of sessions per URL),  
#optional, defaults to 50 

connection.pool.size=150 

#Encryption level (TLS), optional, defaults to REQUIRED. Valid 
#values are NONE,REQUIRED 

encryption.level=NONE 

は、今では、次のエラーを与えています。

org.neo4j.ogm.exception.MappingException: No identity field found for class: org.rozzie.processor.models.dao.cassandra.FlightDAO 

cassandraモデルではneo4j.ogm例外がスローされることに注意してください。フードの下で何が起こっているのですか? 上記のように1つのプロジェクトでスプリングブートを使用してこれら2つのデータベースを設定するにはどうすればよいですか?

+0

を持っているファイルを、あなたのJavaの設定が表示されことができますか? '@ EnableXRepositories'とogmの' SessionFactory'などがあります。 –

+0

@ frant.hartm私は春には新しいです。 spring-data-neo4jとspring-data-cassandraを別々に実験したところ、特定のJava設定ファイルがありませんでした。完全なコード(私が最初に説明したように)は、https://github.com/ChamaraPhilipsuom/rozzie –

答えて

1

これは、Springブート自動設定が複数のSpring Dataプロジェクトを同時に処理できないように見えます。

は特に、あなただけ

@EnableNeo4jRepositories(basePackages = "org.test.project.repositories.neo") 

と同様にカサンドラのためのリポジトリをのNeo4jするSDNモジュールを指している必要がありSpring Data Neo4jSpring Data Cassandra

のマニュアルを参照してください。

+0

に答えがあります。これはまさに問題の背後にある問題です。階層に構成クラスを追加する場所はどこですか?私はまだJavaスプリングの初心者です。これに関してあなたの助けに感謝します。 –

1

私はmongoでneo4jを使用しました。私は何の問題も見ません。私はそれがcassandraと同じであるはずだと推測します。これは私が

@SpringBootApplication 
@EnableConfigurationProperties 
@EnableNeo4jRepositories("com.in.neo4j.repository.neo") 
@EnableMongoRepositories("com.in.neo4j.repository.mongo") 
public class Neo4JApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(Neo4JApplication.class, args); 
    } 
} 

そして、私の性質を持っているすべての設定は、私は

spring.data.neo4j.username=neo4j 
spring.data.neo4j.password=admin 

spring.data.mongodb.database=blah 
spring.data.mongodb.host=blahblah 
spring.data.mongodb.port=27017 
関連する問題