我想在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)
}
答案 0 :(得分:1)
因此,在更新版本的幻像中,会自动生成create
方法。更多细节documentation。 fromRow
方法也会自动生成,因此您无需手动输入。
长话短说,这是你可以使用的:
def create(user: User): Future[UUID] = {
store(user)
.consistencyLevel_=(ConsistencyLevel.ALL)
.future()
.map(_ => user.id)
}