java - spring-data-cassandra CassandraBatchTemplate 不公开

标签 java cassandra spring-data-cassandra

我想使用 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 是接口(interface) CassandraBatchOperations 的默认实现,因此没有“public”应用于 CassandraBatchTemplate 类:

class CassandraBatchTemplate implements CassandraBatchOperations {...}

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

最佳答案

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

而是通过 CassandraOperations.batchOps() 获取 CassandraBatchOperations

关于java - spring-data-cassandra CassandraBatchTemplate 不公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60220517/

相关文章:

cassandra - 从没有墓碑和 ttl 的 Cassandra 中删除整个分区?

configuration - Spring Boot + cassandra

java - spring-data-cassandra 设置一致性级别

java - JUnit 测试时排除@Component 类的过滤器?

java - Java 9 或更高版本中的预计泛型特化,vs List<int> : how will . remove() 工作?

cassandra - 如何获取 cql 查询的墓碑计数?

cassandra - 如何使用 CQL 语句获取特定表的主键/聚集列名称?

java - 2个字的字谜

Java Play 一个请求的两个响应

cassandra - 如何仅在属性未更改时有条件地将数据保存在 cassandra 中