gpt4 book ai didi

scala - 3 笔交易

转载 作者:行者123 更新时间:2023-12-03 15:20:18 25 4
gpt4 key购买 nike

我对光滑的 3 文档描述交易的方式感到困惑。我有光滑的 2 代码,看起来像这样:

def doSomething(???) = DB.withTransaction { implicit session => 
userDao.doSomething(???)
addressDao.doSomething(???)
contactDao.doSomething(???)
}

如何在 slick 3 中跨越交易?

最佳答案

请查看这里的文档 http://slick.typesafe.com/doc/3.0.0/dbio.html#transactions-and-pinned-sessions

这个想法是你将一系列 IO 操作包装成一个 transactionally如本例所示:

val a = (for {
ns <- coffees.filter(_.name.startsWith("ESPRESSO")).map(_.name).result
_ <- DBIO.seq(ns.map(n => coffees.filter(_.name === n).delete): _*)
} yield ()).transactionally

val f: Future[Unit] = db.run(a)

通过这种方式,Slick 仍然被动地处理所有操作,但它会在一个事务中顺序地运行它们。

所以你的例子看起来像这样:
def doSomething(???) = (for {
_ <- userDao.doSomething(???)
_ <- addressDao.doSomething(???)
_ <- contactDao.doSomething(???)
} yield()).transactionally

关于scala - 3 笔交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com