如何使用datastax java驱动程序将timeuuid插入cassandra或使用TimeUUID的无效版本

时间:2013-10-03 14:42:10

标签: cassandra datastax-java-driver datastax

我在cassandra键空间中有一列是timeuuid类型的。当我尝试从java代码插入reocord时(使用DataStax java driver1.0.3)。我得到以下异常

com.datastax.driver.core.exceptions.InvalidQueryException: Invalid version for TimeUUID type.
    at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35)
    at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:269)
    at com.datastax.driver.core.ResultSetFuture.getUninterruptibly(ResultSetFuture.java:183)
    at com.datastax.driver.core.Session.execute(Session.java:111)

以下是我的示例代码:

PreparedStatement statement = session.prepare("INSERT INTO keyspace:table " +
            "(id, subscriber_id, transaction_id) VALUES (now(), ?, ?);");

BoundStatement boundStatement = new BoundStatement(statement);

Session.execute(boundStatement.bind(UUID.fromString(requestData.getsubscriberId()), 
            requestData.getTxnId()));

我还尝试使用UUIDs.timeBased()代替now()。但是我得到了同样的例外。

有关如何从timeuuid数据类型插入/读取的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我错误地创造了

id  uuid

这就是为什么当我尝试在timeuuid类型字段中插入uuid时,我得到了这个例外。

现在我已将id的类型更改为timeuuid,一切正常。