首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光滑3事务如何

光滑3事务如何
EN

Stack Overflow用户
提问于 2015-11-21 12:51:11
回答 1查看 1.2K关注 0票数 1

试图把我的头绕在光滑的3API上。

我有这些方法签名:

代码语言:javascript
复制
  def findById(id: Long): DBIO[Option[Project]] =
Projects.filter(_.id === id).result.headOption

  def insert(Task: Task): DBIO[Long] =
Tasks returning Tasks.map(_.id) += Task

我想在控制器中的单个事务中运行它。

我的代码目前看起来像这样,不是事务性的:

代码语言:javascript
复制
def addTaskToProject(taskName: String, projectId: Long) = Action.async { implicit rs =>

  val query = for {
    Some(project) <-  projectDAO.findById(projectId)
    id <- taskDAO.insert(Task(0, "blue", project.id))
  }yield id

  val result = dbConfig.db.run(query)

  result.map{ taskId =>
    Ok("I have created a new task: " + taskId)
  }
}

1)我试过这样做:

代码语言:javascript
复制
val result = dbConfig.db.run(query).transactionally

但这给了我一个错误:

代码语言:javascript
复制
... value transactionally is not a member of scala.concurrent.Future[Long]

2)然后我试了一下:

代码语言:javascript
复制
val result = dbConfig.db.run(query.transactionally)

并得到了以下错误:

代码语言:javascript
复制
... value transactionally is not a member of slick.dbio.DBIOAction[Long,slick.dbio.NoStream,slick.dbio.Effect.All with slick.dbio.Effect.All]

如何才能运行这个简单的示例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-21 13:13:18

事务是DBIO的功能,尝试如下:

代码语言:javascript
复制
val result = dbConfig.db.run(query.transactionally)

实际上,有一个从DBIOActionJdbcActionExtensionMethods的隐式转换,它具有transactionally函数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33843555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档