java - 如何使用 CassandraOperations 更新集合

标签 java cassandra spring-data-cassandra

我正在研究使用 spring-data-cassandra 的 CassandraOperations 更新 cassandra 表内的集合的示例。 请分享,因为我发现很难做到正确。而且它无法通过网络获得。

谢谢

更新

我研究了 spring-data-cassandra 的代码。目前他们只提供通过更新操作替换集合的选项。我将寻求扩展它并提供用于集合升级的 API

最佳答案

这是一个使用 CQL3 的独立示例。使用 java cassandra 驱动程序将其移植到 spring 应该不会很复杂。

cqlsh> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1 };
cqlsh> CREATE COLUMNFAMILY test.example (name text PRIMARY KEY, emails list<text>);
cqlsh> UPDATE test.example SET emails = ['fake@mail.com'] where name='lyuben';
cqlsh> SELECT * FROM test.example;

 name   | emails
--------+-------------------
 lyuben | ['fake@mail.com']

(1 rows)
cqlsh> UPDATE test.example SET emails = ['not@real.net'] + emails where name='lyuben';
cqlsh> SELECT * FROM test.example;                                              
 name   | emails
--------+-----------------------------------
 lyuben | ['not@real.net', 'fake@mail.com']

(1 rows)
cqlsh> UPDATE test.example SET emails = emails + ['maybe@legit.cc'] where name='lyuben';
cqlsh> SELECT * FROM test.example;                                              
 name   | emails
--------+-----------------------------------------------------
 lyuben | ['not@real.net', 'fake@mail.com', 'maybe@legit.cc']

(1 rows)

DOCS here以下是 other collections 上的一些内容.

唯一需要注意的是,无论将新集合元素附加在语句的开头还是末尾,都会有所不同:

// post-append
['not@real.net'] + emails
['not@real.net', 'fake@mail.com']
// pre-append
emails = emails + ['maybe@legit.cc']
['not@real.net', 'fake@mail.com', 'maybe@legit.cc']

关于java - 如何使用 CassandraOperations 更新集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358794/

相关文章:

适用于大数据的 Cassandra 复制

Cassandra-Stress 因错误而停止

Cassandra数据库问题

java - 如何将AbstractButton的标签放在Icon的底部?

java - 来自 BufferedImage 的新 FileDataSource?

spring-boot - 使用 Spring Data JPA 和 Spring Data Cassandra 时,Spring Boot 1.3.1 出现 VerifierMappingExceptions

java - Spring Boot 1.4 : Spring Data Cassandra 1. 4.2 与 Cassandra 3.0 不兼容?

tomcat - Spring-data cassandra tomcat webapp - 无法 Autowiring CassandraOperations

java - 为我的API创建自己的事件处理程序和事件

java - Richfaces 文件上传组件 - 文件上传事件之前