【问题标题】:spring-data-cassandra CassandraBatchTemplate is not publicspring-data-cassandra CassandraBatchTemplate 不公开
【发布时间】:2020-05-29 21:50:45
【问题描述】:

我想使用 CassandraBatchTemplate 的 withTimestamp 在 CQL 中插入客户端时间戳,如 USING TIMESTAMP 子句。这是我的代码:

  @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 类:

class CassandraBatchTemplate implements CassandraBatchOperations {...}

如果该类不是公开的,那么我无法通过“新”创建它的实例。如何解决?我正在使用 spring-data-cassandra 2.1.10.RELEASE 和 dse-java-driver-core 1.8.2

【问题讨论】:

    标签: java cassandra spring-data-cassandra


    【解决方案1】:

    CassandraBatchTemplate 不公开,因为它的生命周期非常有限。它不打算用作@Bean,因为它仅对单次执行有效。

    改为通过CassandraOperations.batchOps()获取CassandraBatchOperations

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-23
      • 2020-10-31
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2016-08-02
      • 2021-02-07
      相关资源
      最近更新 更多