【问题标题】:Slick: retrieve id of inserted valueSlick:检索插入值的 id
【发布时间】: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?

【问题讨论】:

    标签: scala slick


    【解决方案1】:

    “入门”部分对此进行了说明:

    Slick 的 API 是完全异步的,并在单独的线程池中运行数据库调用。

    这意味着db.run 返回一个Future,该Future 在操作完成时完成(如果操作失败则失败)。所以需要在Future里面处理结果:

    db.run(geoId).map{ idFromDb =>
      // Process the id here
    }
    

    数据库操作完成后将进行处理。主线程不会阻塞。

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 2013-02-04
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2012-04-03
      相关资源
      最近更新 更多