Scala Phantom Cassandra insert方法返回空ResultSet

时间:2017-04-02 17:04:35

标签: cassandra insert phantom-dsl

我想在Cassandra中将数据插入到我的表中,然后从列#34; user_id"中返回值。而不是完整的ResultSet。这是我的代码片段:

   def create(user: User): Future[UUID] = {
     insert
       .value(_.id, user.id)
       .value(_.email, user.email)
       .value(_.name, user.name)
       .consistencyLevel_=(ConsistencyLevel.ALL)
       .future()
       .map(r => fromRow(r.one()).id)
    }

   def fromRow(r: Row): User = {
     User(id(r), email(r), name(r))
   }

所以future()返回Future [ResultSet]。之后我尝试从ResultSet中检索Row,将其修改为User并最终获得id。尽管数据已保存到我的桌子中,但我得到了

  

ResultSet [耗尽:真,列[]]

ResultSet的

列为空,因此r.one()返回null。 我没有为我的目的找到任何例子。那么,phantom-dsl可以像Quill那样做吗?

val q = quote {
  query[Product].insert(lift(Product(0L, "My Product", 1011L))).returning(_.id)
}

1 个答案:

答案 0 :(得分:1)

因此,在更新版本的幻像中,会自动生成create方法。更多细节documentationfromRow方法也会自动生成,因此您无需手动输入。

长话短说,这是你可以使用的:

def create(user: User): Future[UUID] = {
  store(user)
    .consistencyLevel_=(ConsistencyLevel.ALL)
    .future()
    .map(_ => user.id)
}
相关问题