使用Datastax CQL驱动程序插入Cassandra时设置TTL

时间:2013-11-06 08:12:05

标签: java cassandra datastax-java-driver

任何人都可以给我一个暗示,为什么这不起作用?它似乎没有设置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。)

1 个答案:

答案 0 :(得分:3)

您的问题是由于驱动程序不匹配datastax-java-driver和Cassandra(两者都应该是v1或两者都应该是v2) - 尝试将datastax-java-driver升级到v2。

使用datastax-java-driver QueryBuilder也是值得的,这比手动构建String查询更不容易出错。 (datastax-java-driver v1 QueryBuilder javadocs是here。)