我正在使用Cassandra Object Mapping API和Cassandra 2.1。在API中,执行以下步骤时,行似乎是 UPDATE :
转换为 SELECT ,后跟 INSERT 。现有的CQL3.1 UPDATE 语句是否会在Cassandra Object Mapping API的后期支持部分更新?我想避免初次阅读。
答案 0 :(得分:2)
您可以使用Accessor
对更新进行编码。
透明save
vs update
要么需要使用代理和字段拦截器(复杂的impl),要么导致实际隐藏预先读取的反模式。
使用Accessors可以为您提供所需的一切,而无需使映射模块在幕后执行魔术。
此主题已在此处讨论:https://datastax-oss.atlassian.net/plugins/servlet/mobile#issue/JAVA-474
答案 1 :(得分:0)
试试这个mapper https://github.com/valchkou/cassandra-driver-mapping
它支持部分更新,包括集合
mapper.updateValue(id, Entity.class, propertyName, value);
/** Append value to the Set, List or Map. */
append(id, Entity.class, propertyName, value);
https://github.com/valchkou/cassandra-driver-mapping#write
此外,它还具有自动架构同步功能(以及更多功能),无法在datastax映射器中使用
使用示例:
Entity entity = new Entity();
mappingSession.save(entity);
entity = mappingSession.get(Entity.class, id);
mappingSession.delete(entity);
可在maven central上找到:
<dependency>
<groupId>com.valchkou.datastax</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
</dependency>