Spring Data Cassandra 计数器更新

Posted

技术标签:

【中文标题】Spring Data Cassandra 计数器更新【英文标题】:Spring Data Cassandra Counter update 【发布时间】:2015-06-17 17:01:19 【问题描述】:

在 spring 数据文档中,它说:

CassandraTemplate 是查找访问功能的地方,例如递增计数器或临时 CRUD 操作。

我正在尝试使用 spring-data-cassandra 中的 CassandraTemplate 更新计数器,但有关此主题的文档非常稀少。有这方面的好例子吗?

【问题讨论】:

【参考方案1】:

我也没有找到任何好的例子,但是从 CassandraTemplate/CqlTempleate 的源代码来看,代码应该是这样的:

Update updateOp = QueryBuilder.update(cassandraOperations.getTableName(MyMapped.class).toCql());
        updateOp.with(QueryBuilder.incr("my_count_column"))
                        .where(QueryBuilder.eq(...) ); // Primary key clause
cassandraOperations.execute(updateOp);

【讨论】:

【参考方案2】:

您还可以使用自定义@Query 来更新计数器值。

例如,假设您有一些存储库:

public interface SomeRepository extends CassandraRepository<SomeEntity> 

@Query("update some_table SET counter=counter+1 WHERE value1 = ?0 AND value2= ?1;")
Object updateCounterValue(String value1, String value2);

当然你也可以参数化正在更新的值。

【讨论】:

以上是关于Spring Data Cassandra 计数器更新的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 1.4:Spring Data Cassandra 1.4.2 与 Cassandra 3.0 不兼容?

具有响应式Cassandra 的Spring Data

Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容

使用 Spring-data-cassandra 查询具有复合主键的表

使用 spring-boot-data 在 Cassandra 中进行分页

spring-data-cassandra 存储库的多个键空间支持?