scala—如何使用幻像dsl创建键空间和插入数据

zbsbpyhn  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(305)

我第一次使用这个库,遇到了一个问题。我按照文件做了所有的事情,但是什么都没用,我也不知道为什么。这是我的table模型:

trait CassandraModel

object CassandraModel {

  case class TaskData(notifyid: String,
                      notifyType: String)
      extends CassandraModel

  abstract class TaskDataCassandra extends Table[TaskDataCassandra, TaskData] {
    object notifyid       extends StringColumn with PartitionKey
    object notifyType     extends StringColumn

    def store(record: TaskData): InsertQuery.Default[TaskDataCassandra, TaskData] =
      insert
        .value(_.notifyId, record.notifyId)
        .value(_.notifyType, record.notifyType)
  }
}

和数据库提供程序的数据库:

class AppDatabase(override val connector: CassandraConnection) extends Database[AppDatabase](connector) {
  object taskDataCassandra extends TaskDataCassandra with Connector
}

trait AppDatabaseProvider extends DatabaseProvider[AppDatabase]

所以,当我启动我的应用程序,我试图创建一个键空间,但什么都没有发生

object Boot extends App with AmqpConnector with ServiceRestRoute with JsonSerializer with AppDatabaseProvider {

  override def database: AppDatabase = new AppDatabase(CassandraConnector.createCassandraConnection)

  database.taskDataCassandra.create.ifNotExists()

}

存储方法也不起作用

3z6pesqy

3z6pesqy1#

正确地阅读文档,差异会很明显。要读的是数据库文档。
你有两个选择。你可以打电话 database.create() ,这是一个阻塞创建操作,将创建数据库中的所有表。
选择2是打电话 database.taskDataCassandra.create.ifNotExists().future() .
如果你不使用 future() ,您所拥有的只是一个生成的查询,实际上您并没有执行任何操作。如果您检查 database.taskDataCassandra.create.ifNotExists() 这将是一场灾难 CreateQuery ,如果加上 future() 你得到一个 Future[Result] .
希望这有意义。

相关问题