我正在使用Spring数据Cassandra,与Cassandra数据库连接,配置文件扩展AbstractCassandraConfiguration和覆盖函数 -
@Override
public SchemaAction getSchemaAction() {
return SchemaAction.RECREATE_DROP_UNUSED;
}
@Override
public String[] getEntityBasePackages() {
return new String[] {"com.example"};
}
我的目标是在带有@Table注释的com.example包中提到的实体中自动在Cassandra中创建表。 例如 -
package com.example;
import org.springframework.data.cassandra.mapping.PrimaryKey;
import org.springframework.data.cassandra.mapping.Table;
@Table(value="goal")
public class Goal {
@PrimaryKey
private int id;
private String description;
public Goal(int id, String description) {
this.id = id;
this.description = description;
}
public Goal() {
}
public int getId() {
return id;
}
public String getDescription() {
return description;
}
public void setId(int id) {
this.id = id;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Goals [id=" + id + ", description=" + description + "]";
}
}
对于这个实体,使用给定的配置,应该在spring初始化期间创建一个表,但是它没有这样做。 不过没有例外,它只是在Cassandra中没有创造任何东西。 任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
我也遇到过类似的要求和以下工作: -
@Bean
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints("127.0.0.1");
cluster.setPort(9042);
return cluster;
}
public String[] getEntityBasePackages() {
return new String[] { "com.user.entity" };
}
protected String getKeyspaceName() {
return "user_db";
}
public SchemaAction getSchemaAction() {
return SchemaAction.CREATE_IF_NOT_EXISTS;
}
上下文完成后,您可以查看cassandra中的表格。 假设您的密钥空间已在cassandra中创建。 如果您还想动态创建密钥空间,请告知。