Таблицы, не созданные в Cassandra db с помощью springboot - PullRequest
0 голосов
/ 16 декабря 2018

Я пытался создать таблицы в cassandra db при запуске приложения весенней загрузки, но, похоже, он не может создавать таблицы.Ниже моя конфигурация.У меня есть @EnableCassandraRepositories в моем классе приложений.Я уже создал свое пространство ключей по умолчанию.Так что это просто таблицы, которые я хочу создать.

Конфигурация

@Configuration
public class CassandraConfig extends AbstractCassandraConfiguration {
    @Value("${cassandra.contactpoints}")
    private String contactPoints;
    @Value("${cassandra.port}")
    private int port;
    @Value("${cassandra.keyspace}")
    private String keySpace;
    @Value("${cassandra.basePackages}")
    private String basePackages;

    @Autowired
    private Environment environment;

    @Override
    protected String getKeyspaceName() {
        return keySpace;
    }

    @Override
    @Bean
    public CassandraClusterFactoryBean cluster() {
        final CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
        cluster.setContactPoints(contactPoints);
        cluster.setPort(port);
        return cluster;
    }

    @Override
    @Bean
    public CassandraMappingContext cassandraMapping() throws ClassNotFoundException {
        return new BasicCassandraMappingContext();
    }

}

Entity

@Table
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class AssessmentAttemptDetailsEntity implements Serializable {


    @PrimaryKeyColumn(type = PrimaryKeyType.PARTITIONED)
    private String assessmentId;

    @PrimaryKeyColumn(type = PrimaryKeyType.CLUSTERED)
    private String attempid;

}

Приложение

@SpringBootApplication
@ComponentScan(basePackages = {"com.lte.assessmentanalytics.service","com.lte.assessmentanalytics.config", "com.lte.assessmentanalytics.model", "com.lte.assessmentanalytics.listener"})
@EnableCassandraRepositories("com.lte.assessmentanalytics.model")
public class AssessmentanalyticsApplication {

    @Autowired
    private AssessmentAttemptRepository assessmentAttemptRepository;


    public static void main(String[] args) {
        SpringApplication.run(AssessmentanalyticsApplication.class, args);
    }
}

Хранилище

@Repository
public interface AssessmentAttemptRepository extends CassandraRepository<AssessmentAttemptDetailsEntity, Long> {
}

1 Ответ

0 голосов
/ 17 декабря 2018

Мне удалось это исправить, изменив мой класс CassandraConfig на.

@Configuration
@EnableCassandraRepositories("com.lte.assessmentanalytics.model")
public class CassandraConfig extends AbstractCassandraConfiguration {
    @Value("${cassandra.contactpoints}")
    private String contactPoints;
    @Value("${cassandra.port}")
    private int port;
    @Value("${cassandra.keyspace}")
    private String keySpace;
    @Value("${cassandra.basePackages}")
    private String basePackages;


    @Override
    protected String getKeyspaceName() {
        return keySpace;
    }

    @Override
    protected String getContactPoints() {
        return contactPoints;
    }

    @Override
    protected int getPort() {
        return port;
    }

    @Override
    public SchemaAction getSchemaAction() {
        return SchemaAction.CREATE_IF_NOT_EXISTS;
    }

    @Override
    public String[] getEntityBasePackages() {
        return new String[] {basePackages};
    }

}
...