gpt4 book ai didi

spring-data-cassandra - 无法让 SchemaAction.CREATE 工作

转载 作者:行者123 更新时间:2023-12-03 01:26:43 26 4
gpt4 key购买 nike

我的 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 适用于我的项目。但是,当我启动应用程序时,我没有创建任何表。谁能告诉我我做错了什么?

最佳答案

如果你想自动创建表,文档中写得不好,你应该告诉 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 并覆盖您需要的方法。

关于spring-data-cassandra - 无法让 SchemaAction.CREATE 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com