Slick:检索插入值的 id
Posted
技术标签:
【中文标题】Slick:检索插入值的 id【英文标题】:Slick: retrieve id of inserted value 【发布时间】:2021-11-21 02:09:38 【问题描述】:按照这部分文档https://scala-slick.org/doc/3.0.0/queries.html#inserting,我正在尝试实现如上所示的插入操作:
var point = TableQuery[Geopointtable]
val writeQuery = point returning point.map(_.id)
val geoId = writeQuery += GeopointtableRow(0, 50, 40)
val idFromDb = db.run(geoId)
我期待,最后一行代码返回表中新行的 id。相反,它返回:“Future()”。顺便说一句,在数据库中的行创建成功。
是否有任何错误,或者我不清楚这部分文档。是否有其他方法可以检索 id?
【问题讨论】:
【参考方案1】:“入门”部分对此进行了说明:
Slick 的 API 是完全异步的,并在单独的线程池中运行数据库调用。
这意味着db.run
返回一个Future
,该Future
在操作完成时完成(如果操作失败则失败)。所以需要在Future
里面处理结果:
db.run(geoId).map idFromDb =>
// Process the id here
数据库操作完成后将进行处理。主线程不会阻塞。
【讨论】:
以上是关于Slick:检索插入值的 id的主要内容,如果未能解决你的问题,请参考以下文章