我有一个cassandra表,其中包含一个用户定义的类型。使用 CassandraTemplate
从spring数据cassandra,我想更新udt的一个字段。这似乎不可能。
我试过这个:
database.update(query(
where("party_id").is(partyId)).and(where("relationship_id").is(relationshipId)),
update("address.address_line_1", "this field was updated"),
Address.class);
它抛出:
Query error after 3 ms: UPDATE current_addresses_by_party SET "address.address_line_1"=? WHERE party_id=? AND relationship_id=?;com.datastax.driver.core.exceptions.InvalidQueryException: Undefined column name "address.address_line_1"
运行错误输出中给定的cql而不使用引号是有效的。我不知道是否有办法让spring执行这个语句而不把列名加引号。
出于乐观,我还尝试使用Map类型的语法:
database.update(query(
where("party_id").is(partyId)).and(where("relationship_id").is(relationshipId)),
Update.empty().set("address").atKey("address_line_1").to("this field was updated"),
Address.class)
这导致了预期的错误:字段不是Map。
有什么办法可以让我做我想做的吗 CassandraTemplate
而不诉诸于直接的cql?如果 CassandraTemplate
如果没有这个特性,如果开发人员添加它就太好了。
我很惊讶,我找不到其他人想这么做。也许我做错了什么?我对Cassandra还很陌生。
暂无答案!
目前还没有任何答案,快来回答吧!