谁能给我一个提示,为什么这行不通?似乎没有设置TTL。列永远不会删除。但是,在cqlsh中使用INSERT INTO可以解决问题,因此Cassandra本身没有任何问题。
StringBuffer cql = new StringBuffer("INSERT INTO ");
cql.append(getKeyspace());
cql.append(".taskitems ");
cql.append(/* long field list */);
cql.append(" VALUES ");
cql.append("(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) USING TTL 30");
//cql.append(getTimeToLive()); // commented out, trying hardcoded value above
PreparedStatement statement = session.prepare(cql.toString());
session.execute( statement.bind(
/* lots o' fields */
));
(Cassandra v2.0.0,驱动程序v1.0。)
最佳答案
您的问题是由于datastax-java-driver和Cassandra之间的驱动程序不匹配(两者都应为v1或两者都应为v2)-尝试将datastax-java-driver升级到v2。
使用datastax-java-driver QueryBuilder也是值得的,它比手动构建String查询更容易出错。 (datastax-java-driver v1 QueryBuilder javadocs是here。)
关于java - 使用Datastax CQL驱动程序插入Cassandra时设置TTL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19806940/