如何使用Achilles更新cassandra中的TTL,如果不存在则抛出异常

时间:2015-04-17 18:28:28

标签: cql cassandra-2.0

我想使用Achilles更新Cassandra中对象的TTL;但如果该对象不存在,则应抛出异常。我想在Cassandra的一次操作中使用LWT。

我尝试了以下

DO do = asyncManager.forUpdate(DO.class, "not found");
OptionsBuilder.BuiltOptions options = OptionsBuilder.withTtl(5);
options.ifEqualCondition(MappingDO.TYPE_FIELD, "0");

try {
    asyncManager.update(do, options).get(2, TimeUnit.SECONDS);
}
catch (InterruptedException | ExecutionException | TimeoutException e) {
    // An LWT exception should be caught here since the object does not exist
}

由于对象不存在;我希望条件更新失败。但相反,操作不会失败。

1 个答案:

答案 0 :(得分:0)

为了使条件更新起作用;必须更新列。

在对象'do'上,必须至少指定密钥旁边的其他一个属性。该值不必与已存在的值不同。