2

なぜこれがうまくいかないのか、誰かが私にヒントを与えることができますか? 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)

4

1 に答える 1

3

問題は、datastax-java-driver と Cassandra 間のドライバーの不一致によるものです (両方が v1 であるか、両方が v2 である必要があります) - datastax-java-driver を v2 にアップグレードしてみてください。

String クエリを手動で作成するよりもバグが発生しにくいdatastax-java-driver QueryBuilderを使用することも価値があります。(datastax-java-driver v1 QueryBuilder javadocs はこちらです。)

于 2013-11-06T09:03:56.233 に答える