Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在不运行db.run的情况下读取autoincrement Id,并且在单事务中不使用Slick进行理解_Scala_Slick - Fatal编程技术网

Scala 在不运行db.run的情况下读取autoincrement Id,并且在单事务中不使用Slick进行理解

Scala 在不运行db.run的情况下读取autoincrement Id,并且在单事务中不使用Slick进行理解,scala,slick,Scala,Slick,我需要插入到一个表中,并根据返回Id插入到其他表中。无法在Scala集合和DBCollection上运行以进行理解 def savebook(book: Book, bookReaders: Seq[BookReaders]) = { val transformedBookReaders = Seq[BookReaders]() val action1 = bookDAO.insertRow(book).map { id => transformedBookReaders

我需要插入到一个表中,并根据返回Id插入到其他表中。无法在Scala集合和DBCollection上运行以进行理解

 def savebook(book: Book, bookReaders: Seq[BookReaders]) = {
  val transformedBookReaders = Seq[BookReaders]()
  val action1 = bookDAO.insertRow(book).map { id =>
    transformedBookReaders :+ bookReaders.map { bookReader=> new BookAssociation(None, id, bookReader.moduleId, bookReader.userId, bookReader.roleId) }
  }
  val action2 = bookAssocDao.insertRows(transformedBookReaders )
  db.run(action1.andThen(action2).transactionally)
}

我的第二个操作是不插入任何行。

如果在构造
action2
action1
未运行,则
transformedBookReaders
将为空,不会发生任何事情。如果您可以更改
action
以生成
BookReader
的集合,而不是依赖于副作用,则可以构建
action2

def savebook(book: Book, bookReaders: Seq[BookReaders]) = {
  val action1 = bookDAO.insertRow(book).map { id =>
    bookReaders.map { bookReader=> new BookAssociation(None, id, bookReader.moduleId, bookReader.userId, bookReader.roleId)
  }
  val action2 = readers => bookAssocDao.insertRows( readers )
  db.run(action1.andThen(action2).transactionally)
}

我可能误解了
insertRow()
insertRows()
的作用。

我的要求是在中运行非数据库事务代码以供理解。我需要在中执行DB事务代码时迭代scala集合,以便理解

我找到了一个link(),它很好地解释了如何通过使用DBIO.successful在中运行非数据库事务代码以进行理解

 def saveBook(book: Book, bookModules: Seq[BookModule]) = {
    def createBookModuleMapping(bookId: Int) = {
      bookModules.map { bookModule =>
        new bookModule(None, bookId, bookModule.moduleId, bookModule.isActive)
      }
    }

    val action1 = for {
      bookId<-bookDao.insert(book)
      bookModule <- DBIO.successful(createBookModuleMapping(bookId))
      ids <- bookModuleDao.insertRows(bookModule)
    } yield ()

    db.run(action1.transactionally)

  }
def保存本(book:book,bookModules:Seq[BookModule])={
def createBookModuleMapping(bookId:Int)={
bookModules.map{bookModule=>
新建bookModule(无、bookId、bookModule.moduleId、bookModule.isActive)
}
}
val action1=用于{
书呆子