Scala Phantom Cassandra 插入方法 returns 空 ResultSet
Scala Phantom Cassandra insert method returns empty ResultSet
我想将数据插入 Cassandra 中的 table,然后从列 "user_id" 中插入 return 值,而不是完整的结果集。这是我的代码片段:
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() returns Future[ResultSet]。之后,我尝试从 ResultSet 中检索 Row,将其修改为 User 并最终获取 id。尽管数据已保存到我的 table,但我得到了
ResultSet[ exhausted: true, Columns[]]
ResultSet 的列为空,因此 r.one() return 为空。
我还没有为我的目的找到任何例子。那么,phantom-dsl 可以做类似 Quill 的事情吗?
val q = quote {
query[Product].insert(lift(Product(0L, "My Product", 1011L))).returning(_.id)
}
所以在较新版本的 phantom 中,create
方法是自动生成的。更多详细信息 here。 fromRow
方法也会自动生成,因此您无需手动输入。
长话短说,这是您可以使用的:
def create(user: User): Future[UUID] = {
store(user)
.consistencyLevel_=(ConsistencyLevel.ALL)
.future()
.map(_ => user.id)
}
我想将数据插入 Cassandra 中的 table,然后从列 "user_id" 中插入 return 值,而不是完整的结果集。这是我的代码片段:
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() returns Future[ResultSet]。之后,我尝试从 ResultSet 中检索 Row,将其修改为 User 并最终获取 id。尽管数据已保存到我的 table,但我得到了
ResultSet[ exhausted: true, Columns[]]
ResultSet 的列为空,因此 r.one() return 为空。 我还没有为我的目的找到任何例子。那么,phantom-dsl 可以做类似 Quill 的事情吗?
val q = quote {
query[Product].insert(lift(Product(0L, "My Product", 1011L))).returning(_.id)
}
所以在较新版本的 phantom 中,create
方法是自动生成的。更多详细信息 here。 fromRow
方法也会自动生成,因此您无需手动输入。
长话短说,这是您可以使用的:
def create(user: User): Future[UUID] = {
store(user)
.consistencyLevel_=(ConsistencyLevel.ALL)
.future()
.map(_ => user.id)
}