Scala Phantom Cassandra insert方法返回空ResultSet(Scala Phantom Cassandra insert method returns empty Res

编程入门 行业动态 更新时间:2024-10-11 11:21:21
Scala Phantom Cassandra insert方法返回空ResultSet(Scala Phantom Cassandra insert method returns empty ResultSet)

我想在Cassandra中向我的表中插入数据,然后从列“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) }

I want to insert data to my table in Cassandra and then return value from column "user_id" instead of full ResultSet. Here it is snippet of my code:

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

So future() returns Future[ResultSet]. After that I try to retrieve Row from ResultSet, modify it to User and get id eventually. Despite the fact that data were saved to my table I got

ResultSet[ exhausted: true, Columns[]]

columns of the ResultSet are empty and consequently r.one() returned null. I haven't found any examples for my purpose. So, can phantom-dsl do something like Quill?

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

最满意答案

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

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

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

So in more recent versions of phantom that create method is automatically generated. More details here. The fromRow method is also automatically generated so you don't need to type it manually.

Long story short, this is what you could use:

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

更多推荐

本文发布于:2023-07-31 10:18:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1342485.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   Cassandra   insert   Scala   Phantom

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!