如何获取ScalaQuery刚刚插入的自动增量ID

如何获取ScalaQuery刚刚插入的自动增量ID,scala,primary-key,scalaquery,Scala,Primary Key,Scalaquery,我正在使用ScalaQuery访问PostgreSql数据是一个具有名为id的自动增量主键的表,定义为def id=column[Long](“id”,O NotNull,O primarykey,O AutoInc,O DBType“serial”)。我使用Data.insert(名称、文件名)创建新的Data记录。有没有办法获取刚刚创建的记录的id?insert方法仅返回由executeUpdate返回的Int值 ScalaQuery不支持开箱即用的序列ID,您需要首先定义一个助手方法: v

我正在使用ScalaQuery访问PostgreSql<代码>数据是一个具有名为
id
的自动增量主键的表,定义为
def id=column[Long](“id”,O NotNull,O primarykey,O AutoInc,O DBType“serial”)
。我使用
Data.insert(名称、文件名)
创建新的
Data
记录。有没有办法获取刚刚创建的记录的
id
insert
方法仅返回由
executeUpdate
返回的Int值

ScalaQuery不支持开箱即用的序列ID,您需要首先定义一个助手方法:

val seqID = SimpleFunction.nullary[Int]("LASTVAL")
然后,在上述帮助器的作用域中执行插入:

db withSession {
  val q  = Foo.insert(someInstance)
  val id = Query(seqID) // call sequence helper
}
关于“线程安全”的评论,请参考:

和:

谢谢。乍一看,这个解决方案似乎不安全。这是一个问题吗?它是线程安全的,查询发生在会话上下文中,并且LASTVAL保证为当前会话插入最后一个ID