2017-11-02 4 views
-1

こんにちはすべて私はコードを介してneo4jデータベースのインデックスを追加しようとしています。 は、私はこのような私のコンフィギュレーションクラスの設定:スプリングデータneo4jのインデックスを追加すると動作しません

@Configuration 
public class CreateIndex { 

@Bean 
public org.neo4j.ogm.config.Configuration configuration() { 
    org.neo4j.ogm.config.Configuration configuration = new 
       org.neo4j.ogm.config.Configuration(); 

configuration.autoIndexConfiguration() 
.setAutoIndex(AutoIndexMode.ASSERT.getName()); 

configuration.driverConfiguration().setDriverClassName 
("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); 

return configuration; 
} 

    @Bean 
    public SessionFactory sessionFactory() { 
    return new SessionFactory(configuration(), "com.domain"); 
    } 
} 

を持っていると私は@Indexアノテーションを追加ところ、私は私のドメインクラスを持っています。

@NodeEntity 
    @Getter 
    @NoArgsConstructor 
    @Component 
    public class Movie { 
     @GraphId 
     private Long id; 

     @Index(unique = true) 
     private String movieId; 
    } 

と私は私が私のインデックスのクエリは

n.o.d.e.request.EmbeddedRequest  : Request: CALL db.constraints() with params {} 
2017-11-02 16:30:11.780 INFO 40073 --- [   main] o.n.o.d.e.request.EmbeddedRequest  : Request: CALL db.indexes() with params {} 
2017-11-02 16:30:11.789 INFO 40073 --- [   main] o.n.o.d.e.request.EmbeddedRequest  : Request: CREATE INDEX ON :MOVIE(movieId) with params {} 

を実行されている。しかし、私は、インデックスが存在するかどうかを確認しようとすることがわかり、私のログに

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-neo4j</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </dependency> 

としての私の依存関係を持っています何も返さない:schema を使用することではありません。

NEO4JTemplateを使用してクエリを実行しようとしていましたが、開始時にクエリを実行する方法を知っています。例えば

私は、アプリケーションの起動時にコードによってインデックスクエリを追加したい

CREATE INDEX ON :MOVIE(movieId) 

これは私が手動で追加した場合に動作しますが、どのようにコンフィギュレーション・クラスに追加します。

ありがとうございます。

答えて

0

お使いの設定はほとんど正しいです。

あなたが:schemaコマンドを実行します。ここであなたは言いませんが、私の推測では、次のように構成するので、それは、あなたのアプリケーションで使用されるものとは異なるデータベースであるということである。

org.neo4j.ogm.config.Configuration configuration = new 
      org.neo4j.ogm.config.Configuration(); 
configuration.autoIndexConfiguration() 
    .setAutoIndex(AutoIndexMode.ASSERT.getName()); 
configuration.driverConfiguration() 
    .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); 

が一時に一時的にデータベースを作成しますディレクトリであり、アプリケーションのシャットダウン後に削除されます。その理由はURIが指定されていないからです。

データベースURIを指定し、そのデータベースのスキーマを確認してください。

configuration.driverConfiguration() 
    .setURI("...."); 
関連する問題