3

私の Spring Data Cassandra 構成は次のようになります。

@Configuration
@EnableCassandraRepositories(basePackages = {
        "mypackage.repository.cassandra",
})
public class DistributedRepositoryConfiguration  {

    // ...

    @Bean
    public CassandraSessionFactoryBean session() throws Exception {

      CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
      session.setCluster(cluster().getObject());
      session.setKeyspaceName(configuration.get().getKeyspace());
      session.setConverter(converter());
      session.setSchemaAction(SchemaAction.CREATE);

      return session;
    }

}

通常、Spring Data Cassandra は私のプロジェクトで動作します。ただし、アプリケーションを起動すると、テーブルが作成されません。私が間違っていることを教えてくれる人はいますか?

4

3 に答える 3

11

自動テーブル作成が必要な場合は、エンティティ クラスを探す場所を cassandra に指示する必要があります。

<cassandra:mapping entity-base-packages="your.package" />

アノテーション構成を使用して同じことを行いたい場合は、CassandraTemplate にそれを探す場所を明示的に伝える必要があります。そう

@Bean
public CassandraSessionFactoryBean session() throws Exception {

    CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
    session.setCluster(cluster().getObject());
    session.setKeyspaceName(keyspaceName);
    session.setConverter(converter());
    session.setSchemaAction(SchemaAction.CREATE);

    return session;
}

@Bean
public CassandraConverter converter() throws Exception {
    return new MappingCassandraConverter(mappingContext());
}

@Bean
public CassandraMappingContext mappingContext() throws Exception {
    BasicCassandraMappingContext bean = new BasicCassandraMappingContext(); 
    bean.setInitialEntitySet(CassandraEntityClassScanner.scan(("package.with.your.entities")));

    return bean;
}

簡単に行うには、AbstractCassandraConfigurationを使用し、必要なメソッドをオーバーライドすることをお勧めします。

于 2015-05-19T14:34:01.693 に答える