【发布时间】:2019-04-12 21:20:03
【问题描述】:
目前正在使用--
cqlsh> show version
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
使用 phantom-dsl 1.12.2 , Scala 2.10 ..
我不知道如何设置查询的一致性级别。
insert() ,select() 作为CassandraTable 的一部分有预定义函数。我怎样才能将一致性级别传递给它们?
insert.value(....).consistencyLevel_=(ConsistencyLevel.QUORUM)
不起作用并因错误而失败(可能是因为这在查询末尾附加了“使用一致性仲裁”)。这是我得到的实际异常
com.datastax.driver.core.exceptions.SyntaxError: line 1:424 no viable alternative at input 'CONSISTENCY'
at com.datastax.driver.core.Responses$Error.asException(Responses.java:122) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:120) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:186) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler.access$2300(RequestHandler.java:45) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:754) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:576) ~[cassandra-driver-core-2.2.0-rc3.jar:na]
我从 this 拉取请求的文档和讨论中看到,我可以在 SimpleStatement 上执行 setConsistencyLevel(ConsistencyLevel.QUORUM),但我不希望重写所有不同的插入语句。
更新
只是为了结束这个问题。我通过创建自定义InsertQuery 然后使用它而不是final def insert 在CassandraTable 中提供的那个来解决这个问题
def qinsert()(implicit keySpace: KeySpace) = {
val table = this.asInstanceOf[T]
new InsertQuery[T, M, Unspecified](table, CQLQuery("INSERT into keyspace.tablename", consistencyLevel = ConsistencyLevel.QUORUM)
}
【问题讨论】:
标签: scala cql3 phantom-dsl