Spring-Data-Cassandra CassandraBatchTemplate не является публичной - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу использовать withTimestamp CassandraBatchTemplate для вставки временной метки на стороне клиента, как в условии USING TIMESTAMP в CQL. вот мой код:

  @Bean
  public DseSession dseSession(DseCluster dseCluster) {
    return dseCluster.connect(keyspace);
  }

  @Bean
  public CassandraOperations cassandraTemplate(DseSession session) {
    return new CassandraTemplate(session);
  }

  @Bean
  public CassandraBatchOperations cassdraBatchTemplate(CassandraOperations cassandraTemplate) {
    return new CassandraBatchTemplate(cassandraTemplate);
  }

при компиляции он жаловался, что не может найти CassandraBatchTemplate, хотя я вижу его в исходном коде spring-data-cassandra. я заметил, что CassandraBatchTemplate является реализацией интерфейса CassandraBatchOperations по умолчанию, поэтому к классу CassandraBatchTemplate не применяется 'publi c':

class CassandraBatchTemplate implements CassandraBatchOperations {...}

, если класс не является publi c, тогда я не могу создать экземпляр этого «новым». как обойти? Я использую spring-data-cassandra 2.1.10.RELEASE и dse- java -driver-core 1.8.2

1 Ответ

1 голос
/ 17 февраля 2020

CassandraBatchTemplate не опубликовано c, потому что у него очень ограниченный жизненный цикл. Он не предназначен для использования в качестве @Bean, поскольку он действителен только для одного выполнения.

Вместо этого получите CassandraBatchOperations через CassandraOperations.batchOps().

...