Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何使用幻影dsl创建键空间和插入数据_Scala_Cassandra_Phantom Dsl - Fatal编程技术网

Scala 如何使用幻影dsl创建键空间和插入数据

Scala 如何使用幻影dsl创建键空间和插入数据,scala,cassandra,phantom-dsl,Scala,Cassandra,Phantom Dsl,我第一次使用这个库时遇到了一个问题。我按照文档做了所有的事情,但是没有任何效果,我也不知道为什么。这是我的桌子模型: trait CassandraModel object CassandraModel { case class TaskData(notifyid: String, notifyType: String) extends CassandraModel abstract class TaskDataCassand

我第一次使用这个库时遇到了一个问题。我按照文档做了所有的事情,但是没有任何效果,我也不知道为什么。这是我的桌子模型:

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()

}

存储方法也不起作用

正确地阅读文档,差异会很明显。要读的东西是

你有两个选择。您可以调用database.create,这是一个阻塞创建操作,将创建数据库中的所有表

选项2是调用database.taskDataCassandra.create.ifNotExists.future

如果您不使用future,您所拥有的只是生成的查询,您实际上并没有执行任何操作。如果您检查database.taskDataCassandra.create.ifNotExists的返回类型,它将是一个CreateQuery,如果您添加future,您将得到future[Result]

希望这是有意义的。

你需要未来,等待它完成。见: