【问题标题】:Scala Phantom Cassandra Conditional insert?Scala Phantom Cassandra 条件插入?
【发布时间】:2017-08-18 17:01:20
【问题描述】:
我正在使用 Phantom 库将 Scala 代码中的行插入 Cassandra。
所以基本上我创建了一个扩展 CassandraTable 的类,然后我从幻像库中获取所有创建、更新方法。
我想知道的一件事是它是如何生成其 INSERT 语句的。它是否会生成条件更新语句(如 INSERT IF NOT EXISTS)的 vanilla INSERT 语句。
【问题讨论】:
标签:
scala
cassandra
phantom-dsl
【解决方案1】:
只需记录查询,响应就会很明显。默认情况下,insert 查询不包含ifNotExists。从 Phantom 2.5.0 开始,表格会自动生成 store 方法,因此您可以调用:
database.table.store(record).ifNotExists.future()
幻影 2.5.0 之前:
def store(record: Record): InsertQuery.Default[Table, Record] = {
insert.value(_.column1, record.value1)
.value(_.column2, record.value2)
...
.ifNotExists()
}
附带说明,幻像中的所有查询都有一个 .qb.queryString 访问器,因此查看内部非常简单。