我尝试使用下面的代码:
final Session session = connection.getSession();
final String keyspaceName = session.getLoggedKeyspace();
psInsert = session.prepare(QueryBuilder
.insertInto(keyspaceName, CampaignConstants.TABLE_NAME_SAMPLE)
.value("ID", QueryBuilder.bindMarker())
.value("NAME", QueryBuilder.bindMarker())
.value("UPDATE_TIME", QueryBuilder.now()));
“ UPDATE_TIME”列的类型为“时间戳”。我无法将其修改为“ TimeUUID”类型。
我收到此错误:
com.datastax.driver.core.exceptions.InvalidQueryException:类型错误: 无法将功能system.now(类型timeuuid)的结果分配给 update_time(时间戳类型)
函数QueryBuilder.now()返回一个Java类实例:com.datastax.driver.core.querybuilder.Utils $ FCall。
我进行了搜索,但是文档中没有指定如何使用驱动程序使用now()函数。
答案 0 :(得分:3)
在CQL中,您需要使用以下表达式:toTimestamp(now())
。
对于Java驱动程序4.x,它被翻译为以下内容:您需要使用QueryBuilder.now()
来代替QueryBuilder.toTimestamp(QueryBuilder.now()
。
对于Java驱动程序3.x,您需要将QueryBuilder.now()
包装到QueryBuilder.fcall中,如下所示:QueryBuilder.fcall("toTimestamp", QueryBuilder.now())